排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
爬虫
首先了解一下常见反爬虫的检测方法
频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超过了设置的阈值,那么便会判定该IP的源头是一个爬虫机器人,从而限制访问频率或暂时禁止IP对其的访问
频数监测:与1有些类似,但是是对用户访问页面的数量进行统计,并在监测结果超过阈值后进行限制操作
Headers识别:这里常用的是对UA的识别和对Referer的判断。User-Agent是用户所使用的操作系统以及浏览器的标识。Referer表示请求是从哪个链接而来的。
为什么要说一下呢、、、因为可能我访问次数太频繁,我的ip被csdn封了......只能挂代理了
每一次访问都会更换user-agent,我查阅知乎,对于csdn这种大型网站,好像并没有什么用
正好试着用了一下ip池,代理ip需要自己选,百度就行,注意类型得是https的
但是发现即使更换ip,依旧是30+秒才能增加一次,这个问题没有解决,我猜测或许是访问量突破某一个门限值才能解除此限制??不懂,希望大佬指点(已解决)
最后,通过这种方法刷访问量,感觉挺无耻的、、、有正义感的大佬勿喷
(3.6更新)我之前使用代理的代码是错误的。。。惭愧,更改之后的代码可以使用不同的ip,大大提高刷的效率,当然由于西刺可以使用的ip很少,如果可以买大量代理ip,那么一天刷取的浏览量还是很客观的
import urllib2 import random import time import requests proxy_list=[] def get_proxy_list(): global proxy_list print "导入proxy_list...".decode('utf-8') #ip文件可以浏览我上文链接文章“多线程爬虫——抓取代理ip” f=open("ip.txt") #从文件中读取的line会有回车,要把\n去掉 line=f.readline().strip('\n') while line: proxy_list.append(line) line=f.readline().strip('\n') f.close() def start(): #总次数和有效次数 times=0 finished_times=0 #无限刷 while 1: user_agent_list=[ {'Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0)'}, {'Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)'}, {'Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)'}, {'Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11'}, {'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1'}, {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}, {'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)'}, {'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0'}, {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36'}, {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36'} ] referer_list=[ {'http://blog.csdn.net/dala_da/article/details/79401163'}, {'http://blog.csdn.net/'}, {'https://www.sogou.com/tx?query=%E4%BD%BF%E7%94%A8%E7%88%AC%E8%99%AB%E5%88%B7csdn%E8%AE%BF%E9%97%AE%E9%87%8F&hdq=sogou-site-706608cfdbcc1886-0001&ekv=2&ie=utf8&cid=qb7.zhuye&'}, {'https://www.baidu.com/s?tn=98074231_1_hao_pg&word=%E4%BD%BF%E7%94%A8%E7%88%AC%E8%99%AB%E5%88%B7csdn%E8%AE%BF%E9%97%AE%E9%87%8F'} ] #想要刷的blog的url url='http://blog.csdn.net/dala_da/article/details/79401163' #随机user_agent和Referer header={'User-Agent':random.choice(user_agent_list), 'Referer':random.choice(referer_list) } #依次从proxy_list中取 ip=proxy_list[times%len(proxy_list)] #设置代理,格式如下 proxy_ip = 'http://' + ip proxy_ips = 'https://' + ip proxy = {'https': proxy_ips, 'http': proxy_ip} try: response=requests.get(url, headers=header, proxies=proxy) except: #无响应则print出该代理ip print '代理出问题啦:'.decode('utf-8')+proxy["https"] time.sleep(0.1) else: print ('已刷%d次,%s')%(finished_times+1,proxy["https"]) time.sleep(random.random()) finished_times+=1 times+=1 #每当所有的代理ip刷过一轮,延时15秒 if not times%len(proxy_list): time.sleep(15) if __name__=="__main__": get_proxy_list() start()
原文:https://blog.csdn.net/dala_da/article/details/79401163
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739
评价