fake_useragent_随机请求头模块
当我们在对目标url进行数据采集的时候,难免会遇到反爬,比如说一定时间内你的ip访问量过多的时候,你在请求url,就给你一个反馈,告诉你你的请求次数太频繁,请稍后再试,无法正常的进行数据采集,那么我们可以伪造请求头和ip来对目标url进行访问,这里先介绍请求头。
1.安装
- 方法一:在cmd命令行中进行安装,pip install fake_useragent
- 方法二:在Pycharm的settings进行安装
2.简单使用
我们通过导入fake_useragent的UserAgent模块实例化出一个对象,这个实例化对象的random属性就是我们要的随机的请求头
EG1:随机打印请求头
from fake_useragent import UserAgent
for i in range(5):
print(UserAgent().random)
执行结果:
Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/21.0.1
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36
可以看到,每次打印的请求头都不尽相同。
EG2:使用http://httpbin.org/user-agent进行测试
补充:httpbin.org这个网址是专门用来测试的,测试你发送请求的各种信息,比如ip,请求头,cookies,data等等
http://httpbin.org/user-agent是用来获取请求头的,你也可以在网页中直接打开,就是你刚发送请求的请求头了,如下图,两个使用开发者查看请求的请求头和该网址的响应是一样的。
这里使用requests模块来发送这个请求
# EG2:使用http://httpbin.org/user-agent进行测试
import requests
from fake_useragent import UserAgent
url = "http://httpbin.org/user-agent"
for i in range(5):
headers = {
"user-agent": UserAgent().random
}
res = requests.get(url, headers=headers)
print(res.text)
执行结果如下,测试结果和预期一致,不尽相同
{
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"
}
{
"user-agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36"
}
{
"user-agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36"
}
{
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36"
}
{
"user-agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/11.0.696.57)"
}
在对请求头犯愁的情况就不复存在了!!!