您的位置:首页 > 其它

使用爬虫刷csdn博客访问量

2018-02-28 16:42 447 查看
这一篇ip为我提前设定的,自动抓取代理ip可以看我另一篇blog:多线程爬虫——抓取代理ip

首先了解一下常见反爬虫的检测方法
频率监测:有些网站会设置一种频率监测的机制,对于同一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,那么一天刷取的浏览量还是很客观的
代码如下:# -*- coding: utf-8 -*-

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  刷访问量 ip限制