无论使用requests还是httpx其实不设置ua也是可以跑的,只不过跑的时候是默认的ua,但是对于一些设置了防火墙或者有防御性质的cdn来说,默认的ua是肯定进不去的。所以我们今天来聊聊关于爬虫的ua的设置问题。
ua全名是user-agent,其实就是我们常说的协议头。
比如百度spider的ua就是:Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
常见的浏览器ua是:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
常规来说如果我们爬虫不是很频繁,那我们可以将ua设置成固定的常见浏览器ua就可以避过站长的巡查,但是如果频繁,站长可能为了保证服务器正常运行,还是有可能将我们的ip和ua禁掉的。
ip被禁我们就不聊了,可以直接用代理解决,但是ua怎么办?
推荐个库faker,这个库其实就是个协议头合集,我们通过设置可以每次变换一个ua,这样配合代理就不可能将我们所有的爬虫都封掉了。
代码如下:
from faker import Faker
uas = Faker()
ua=uas.user_agent()
ua=uas.user_agent()为获取随机ua的代码,将这行放到get请求前,然后替换headers中的ua就好。
演示代码:
import requests
from faker import Faker
uas = Faker()
links = ['','','']
for url in links:
ua=uas.user_agent()
headers = {'user-agent': ua}
res=requests.get(url,headers=headers,proxies=proxies)
r=res.text
这样就可以实现每次请求ip和ua都不同,从而避免被封的问题