注意: IP代理精灵仅提供国内ip网络节点,不提供境外网络节点,不能用于任何非法用途或访问境外封闭网站,不能跨境联网,只能用于合法的国内网络加速。

请登录 注册 实名验证

首页 > 新闻资讯 > Squid代理服务器搭建亿级爬虫IP代理池

Squid代理服务器搭建亿级爬虫IP代理池

来源:IP代理精灵 作者:admin 时间:2019-07-17 14:48:05

做爬虫抓取时,我们经常会碰到网站针对IP地址封锁的反爬虫策略。但只要有大量可用的IP资源,问题自然迎刃而解。


以前尝试过自己抓取网络上免费代理IP来搭建代理池,可免费IP质量参差不齐,不仅资源少、速度慢,而且失效快,满足不了快速密集抓取的需求。


收费代理提供的代理资源质量明显提升,最终选定使用IP代理精灵作为代理提供平台。


IP代理精灵每天能提供大概5万个不重复的短效高匿代理,每个代理存活期为2分钟,总IP数有20亿,IP数量足够使用。价格为包天30元,包月500元,还有半年及一年的套餐可供选择。只要能满足项目要求,提供优质稳定的服务,这些成本值得付出。


高匿代理才可以真正用来防止爬虫被封锁,如果使用普通代理,爬虫的真实IP还是会暴露。


搭建思路


IP代理精灵提供了大量的代理服务器资源,主要考虑如何将这些服务器分配给爬虫服务器使用。最初的想法是使用Redis作为代理服务器资源队列,一个程序自动获取IP代理精灵API提供的代理,验证可用后push到Redis里,每个程序再从Redis中pop一个代理进行抓取,但这样的缺点是不太好控制每台爬虫服务器的代理质量,有的代理速度快,有的速度比较慢,影响抓取效率,其次就是需要自行维护一套代理验证、分配的程序,增加了代码量,不便后期维护。


为了解决这些问题,我想到可以使用 Squid 提供的父代理功能,自动将爬虫服务器的请求转发给代理服务器。Squid提供了自动轮询功能,自动验证并剔除不可用的代理。减少了我们多余的验证步骤。


爬虫软件只需将代理设置为 Squid 服务器即可,不需要每次重新设置为其他的代理服务器。


这套方案明显减少了工作量,提高了易用性和可维护性。


实现过程


首先获取代理平台提供的代理服务器资源


建议购买短效代理,购买后在后台获取API地址并设置IP白名单等参数


将获取到的代理服务器写入squid配置文件


解析网站提供的代理服务器,按照一定规则写入 /etc/squid/squid.conf


重新配置 squid


写入配置文件之后重新加载最新的文件,不会造成中断


自动更新,重复1-3


由于网站提供的代理存活时间只有2分钟,所以需要每隔一段时间重新获取一批新IP

gevent monkey  monkey.patch_all()  logging
os
time

requests
gevent.pool Pool

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
    =)

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(formatter)

logger.addHandler(ch)

PEER_CONF = GOOD_PROXIES = []

pool = Pool()


(proxy):
    GOOD_PROXIES
    ipport = proxy
    _proxies = {: .format(ipport)}
    :
        ip_url = res = requests.get(ip_url=_proxies=)
        ip res.content
        logger.info(.format(ipport))
        GOOD_PROXIES.append(proxy)
    e:
        logger.error(.format(ipporte))


():
    () F:
        squid_conf = F.readlines()
    squid_conf.append()
    proxy GOOD_PROXIES:
        squid_conf.append(PEER_CONF % (proxy[]proxy[]))
    () F:
        F.writelines(squid_conf)


():
    GOOD_PROXIES
    GOOD_PROXIES = []
    api_url = res = requests.get(api_url).content
    (res) == :
        logger.error()
    res:
        logger.error()
    :
        logger.info()
        proxies = []
        line res.split():
            proxies.append(line.strip().split())
        pool.map(check_proxyproxies)
        pool.join()
        update_conf()
        os.system()
        logger.info()


():
    start = time.time()
    :
        time.time() - start >= :
            get_proxy()
            start = time.time()
        time.sleep()


__name__ == :
    main()

使用方法


按Squid 搭建正向代理服务器、Squid 配置高匿代理介绍的方法搭建运行 Squid 高匿服务器


备份原始配置文件cp /etc/squid/squid.conf /etc/squid/squid.conf.original,以供软件使用


在squid服务器上运行python zdy.py


实例


如果按照上述方法搭建好代理IP池,只需要在爬虫代码中设置设置squid代理服务器地址和端口(比如139.xxx.xxx.66:3188)。

__future__ print_function

requests

s = requests.Session()
s.proxies.update({: })
(s.get())

每次运行这个程序时,返回的IP都不一样,而且仅有一个,说明IP代理池已经搭建成功,可以应用在网络爬虫项目中。


总结


这套解决方案结合了网络上的大量优质代理资源以及Squid服务器提供的特性,基本解决了网站对于爬虫IP的封锁。


成本比较低,而且有比较高的易用性,很方便地能结合到各种爬虫应用中,只需要增加一个代理地址即可,而由 Squid 统一管理父代理,不需要在爬虫程序中进行代理的获取验证等等操作,便于维护。


实际使用中还没有发现什么特别重大的问题,更多扩展性还有待后续继续研究。


最新资讯

推荐阅读

  1. 11

    2019-09

    使用http代理的API的验证方式

    使用http代理的API的验证方式。大数据时代下,iP代理的使用越来越普遍。在寻找IP代理提供商的时候,大家都可以发现,尤其是http代理的,大部分公司的网站上都可以看到可以免费使用的ip,那

  2. 21

    2019-10

    为什么要选择使用高匿代理服务器?

    为什么要选择使用高匿代理服务器?在数据时代,相信大家对于代理ip相信大家都不会陌生,尤其是在这个互联网的时代上,那么大家使用网络ip来进行网络的访问已经是一件非常正常的事情,但

  3. 28

    2019-05

    代理服务器的作用有哪些

    人们常说21世纪是信息产业高速发展的时代。的确如此,科技进步发展到了今天,网络已经走进千家万户,成为 现代 生活中,必不可少的一种事物。而与网络相关的一些名词纷至沓来,不绝于

  4. 24

    2019-06

    IP代理精灵——优质互联网大数据IP营销软件

    随着互联网飞速发展,代理IP在生活中的应用越来越多,经常听说代理IP或者HTTP代理,那么到底什么是代理IP呢?通俗的讲,代理IP是一个网络信息中转站,其功能就是代用户去取得网络信息,通

  5. 10

    2021-02

    安卓智能手机设置代理IP的步骤

    安卓智能手机设置代理IP的步骤

  6. 29

    2020-01

    如何验证IP功能是不是强大?

    如何验证IP功能是不是强大?从事互联网工作的人,当反复遇到代理我隐藏的 IP代理 P慢的时候,我相信无论多么好的脾气都难以抑制愤怒,事实上,这并不难解释。假设我们是电信用户,我们会