欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

13伪装必杀技之使用超级简单的请求头fake_useragent库

程序员文章站 2022-05-09 11:17:25
...

前几天写代码追对反爬的问题,一直需要自己去大量看别人的代码积累一些User-agent,今天竟然无意中发现了fake_useragent库,具体用法可以查看官网

安装

pip3 install fake_useragent

各浏览器User-Agent的值

from fake_useragent import UserAgent
ua = UserAgent()
# ie浏览器的user agent
print(ua.ie)
Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
#opera浏览器
print(ua.opera)
Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11
#chrome浏览器
print(ua.chrome)
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2
#firefox浏览器
#firefox浏览器
print(ua.firefox)
Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
#safri浏览器
print(ua.safari)
Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

实用性

写到这里大家会发现写爬虫最实用的是可以随意变换headers,一定要有随机性。在这里我写了三个随机生成user agent,三次打印都不一样,随机性很强,十分方便。

from fake_useragent import UserAgent
ua = UserAgent()
print(ua.random)
print(ua.random)
print(ua.random)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11

爬虫中具体使用方法

import requests
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent': ua.random}
url = '待爬网页的url'
resp = requests.get(url, headers=headers)
#省略具体爬虫的解析代码,大家可以回去试试
...

看到这里不禁会有疑问,一个请求头怎么可能称为必杀技,那么,随机的请求头外加上设置睡眠,随机发起请求呢?

昨天爬一个网站一直被封ip感觉代理池整了1000个ip还是会被封,甚至出现爬取数据不完整的情况,一直纠结于如何获取并且验证更高效的代理ip的思路无解,浏览网页时候无意中点击网页想到爬虫是以固定速度访问,即便是设置了延时,很容易根据这一点被判定为爬虫,那么设置睡眠是很好的选择,再加上随机的请求头,只用了不到20个代理ip很完美的解决了问题。遇到问题,一条路走不通的时候换一条路也是可以的,原则只有一条,浏览器能访问的内容,爬虫肯定能抓取,关键在于能不能让自己的爬虫伪装的更像浏览器。