动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

如何用代理服务器加速爬虫速率

发布时间:2019-05-14 09:52:11 来源:黑核动态ip代理

分享到

  如何用代理服务器加速爬虫速率?我在爬数据的时候发现绝大多数目标网站都具有反爬虫策略,最简单的反爬虫策略包括限制单位时间内同一ip的访问次数,或同一个登陆账户的访问次数(通过cookies实现)。例如新浪微博两者都有,网易新闻限制了ip访问次数等。

如何用代理服务器加速爬虫速率

  对于新浪微博,我的策略是申请了几十个微薄帐号,在分布式框架下通过十几台计算机(独立ip)进行轮爬。没有用代理服务器的方法,是因为代理服务器大多不是本地ip,如果一个用户帐号被发现经常在不同地区登陆,会被要求进行验证码验证,而在python下添加自动验证码验证的识别率不高,所以放弃了。值得一提的时,本来goagent在美国有一个代理网段是可以用来加速的,但是我太激进,没有设置请求间隔,一晚上爬了十几万个页面,造成以后挂那个网段的代理都被要求验证码验证。

  对于网易新闻这类不严格要求登陆的网站,就可以用不同地区的公开代理服务器进行加速了,甚至国外地址都没有问题。他们自己的PM说不定还会兴高采烈地跟上层汇报产品的国际访问量大幅上升,呵呵。

  公开的代理服务器很多,而且一些黑客站点会将其公开出来,类似地有挂在Russia的:proxylist 和国内的 cn-proxy . 里面的代理地址一般保持5分钟更新。另外要注意的是,这些代理服务器不一定能够访问你的目标网站,所以最好把他们都搜集下来,维护一个列表,在启动爬虫之前用目标网站的一个页面测试一下。

  下面我把自己的测试方法给出来,ProxyData.py是反馈ip地址的,ProxyFind.py是通过多线程方法来测试代理的访问速度,如果不用多线程测试万数千个代理可能需要若干小时时间。

    #ProxyData.py    #省略了好几千个代理,大家自己去搜集列表吧
    proxies = ['117.135.250.134:80','117.135.250.133:8083','117.135.250.130:84','117.135.251.132:83','117.135.250.134:8083'] 

    def getProxies():
        temp = []        for item in proxies:
            ip, port = item.split(':')
            temp.append([ip, port])        return temp

  多线程测试,如果通过测试则inserDB():

    #ProxyFind.py    import ProxyData    class ProxyCheck(threading.Thread):    def __init__(self,proxyList):
        threading.Thread.__init__(self)
        self.proxyList = proxyList
        self.timeout = 20        #测试的是能否得到网易新闻跟帖
        self.testUrl = 'http://comment.news.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/threads/BAHNKE3400014PRF/comments/newList?offset=0&limit=30&showLevelThreshold=72&headLimit=1&tailLimit=2&callback=getData&ibc=newspc'        #self.testStr = r'<a href="http://[\S]*\.html">'
        self.testStr = r'getData'    def checkProxy(self):
        cookies = urllib2.HTTPCookieProcessor()        for proxy in self.proxyList:
            proxyHandler = urllib2.ProxyHandler({"http" : r'http://%s:%s' %(proxy[0],proxy[1])})
            opener = urllib2.build_opener(cookies,proxyHandler)
            opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0')]
            t1 = time.time()            try:
                req = opener.open(self.testUrl, timeout=self.timeout)
                result = req.read()                #print result                #print result
                timeused = time.time() - t1
                pos = re.findall(self.testStr, result)                #print pos                if len(pos) > 0:
                    checkedProxy.append((proxy[0],proxy[1],timeused))                else:                    continue                #print len(checkedProxy)            except Exception,e:                continue    def run(self):
        self.checkProxy()   
    if __name__ == "__main__":
        rawProxyList = ProxyData.getProxies()

        getThreads = []
        checkThreads = []        print 'checking...'        for i in range(100):
            t = ProxyCheck(rawProxyList[((len(rawProxyList)+99)/100) * i:((len(rawProxyList)+99)/100) * (i+1)])
            checkThreads.append(t)        for i in range(len(checkThreads)):
            checkThreads[i].start()        for i in range(len(checkThreads)):
            checkThreads[i].join()        print '.'*10+"总共有%s个代理通过校验" %len(checkedProxy) +'.'*10

        insertDB(checkedProxy)

  得到可用的代理服务器列表之后,就是构造urllib2的opener来请求数据了,替换其中的ip和port变量:

    import urllib2    import cookielib
    proxyHandler = urllib2.ProxyHandler({"http" : r'http://%s:%s' %(ip,port)})
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), proxyHandler)
    opener.addheaders = [
        ('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'), ('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),('Host', 'comment.' + category + '.163.com'),('Accept-Encoding', 'gzip,deflate')]
    response = opener.open(target_url, timeout=20)


相关资讯

实用https代理服务器别人能查到真实地址吗

现在,高匿代理ip时代已经到来,但是,还是有很多人不了解高匿代理ip到底有什么用,虽然随着网络科技的发展,网络对我们的生活带来了很多方便,也带来了更多的选择,网

来源:黑核混拨ip加速器网

2018-12-28 17:02:47

什么是代理服务器?代理服务器有什么用?

代理服务器(ProxyServer)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接

来源:黑核混拨ip代理

2019-01-21 10:58:07

IP代理服务器怎样才能够满足客户的需求?

近几年来,代理服务器的发展越来越迅速,很多人都掌握了网络托管的常识,在办理网站时服务器也是必不可少的,而且代理服务器网站为客户提供资源选择使代理服务器随着市场的

来源:黑核混拨ip代理

2019-03-27 14:17:04

如何判断代理服务器列表中的好坏?

如何判断代理服务器列表中的好坏?基本上一个较为正规或成熟的代理服务器平台,他们都会有专业的技术团队和客服售后,而且这些很容易使他们的综合水平考察范围,因此我们可

来源:黑核混拨ip代理

2019-03-28 16:40:53

如何使用代理服务器增强安全性和性能

什么是代理服务器地址?代理是替代,顶替。在因特网世界中,代理服务器充当具有私有IP地址的web浏览器(计算机)与因特网上的另一服务器之间的中介。代理服务器有自己

来源:黑核混拨ip代理

2019-04-01 17:31:48

如何使用代理服务进行质量广告系列检查

随着数字出版商在间接渠道中变得更加活跃,他们越来越多地接触到全球广告市场。对于过去只在美国工作的团队来说,这意味着更多的责任与更低的可见度。如果您的AdOps小

来源:黑核混拨ip代理

2019-04-02 11:22:03

代理服务器如何操作?有哪些风险?

近日有不少用户咨询我们代理服务器方面的问题,小编针对这些问题做了一些整理。今天就和大家简单的介绍一下代理服务器那些事儿。什么是代理服务器?代理服务器充当您和互联

来源:黑核动态ip代理

2019-04-04 11:01:41

如何用代理服务器加速爬虫速率

如何用代理服务器加速爬虫速率?我在爬数据的时候发现绝大多数目标网站都具有反爬虫策略,最简单的反爬虫策略包括限制单位时间内同一ip的访问次数,或同一个登陆账户的访

来源:黑核动态ip代理

2019-05-14 09:52:11

什么是ip代理软件?可以修改ip地址吗?

经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们

来源:黑核混拨ip加速器网

2018-12-27 17:27:18

如何用php代码检查代理ip的有效性

如何用php代码检查代理ip的有效性?本文实例为大家分享了检查代理ip有效性php代码,稳定性,如错误率和查询用时,下面一起来看看要怎么做吧!/** 

来源:黑核动态ip代理

2019-05-06 10:03:26

黑核混拨IP加速器让你知道如何改变ip地址

被论坛禁言了?玩游戏作弊,被封号了?被人屏蔽IP是件很让人不爽的事情,平时正忙的时候被封禁,会有种天塌下来的感觉。如何改变ip地址成了我们比做的事情,不改变IP

来源:黑核混拨ip加速器网

2018-12-25 16:58:44

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961