scrapy使用随机User-Agent
众所周知,User-Agent值是用来帮助服务器识别用户使用的操作系统、浏览器、浏览器版本等等信息的,因此也常被用来检测爬虫。
许多网站会ban掉来自爬虫的请求,来达到反爬的目的。
正常浏览器的User-Agent值为:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
使用requests
时的默认User-Agent为:
python-requests/2.18.4
scrapy
的默认值为:
Scrapy/1.5.0 (+https://scrapy.org)
服务器可以轻易识别出该请求是否来自爬虫。
因此为了减小爬虫被ban的几率,我们可以通过设置请求的User-Agent来达到欺骗服务器的目的。
在scrapy里,设置随机的User-Agent有两种方式
- 通过middlware添加
- 在spider的request里添加
首先介绍第一种,通过middleware添加
- 安装fake-useragent
pip install fake-useragent
这个包里内置了许多浏览器的User-Agent,这样就不用我们自建一个User-Agent池了- 在你的scrapy项目的middlewares.py导入fake-useragent包
from fake_useragent import UserAgent
然后将下面的RandomUserAgentMiddlware
复制进去
class RandomUserAgentMiddlware(object):
#随机更换user-agent
def __init__(self