from faker import Faker
class MySpiderMiddleware(object):
def __init__(self):
self.fake = Faker() def process_request(self,request,spider):
request.headers.setdefault('User-Agent',self.fake.user_agent())
DOWNLOADER_MIDDLEWARES = {
#'middle.middlewares.MyCustomDownloaderMiddleware': 543,
'middle.middlewares.MySpiderMiddleware': 100,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
}

第一种方式 在setting 配置里面配置,我也没测试过,到底是一直是随机取其中一个还是每次请求都随机一个

USER_AGENT_LIST=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
USER_AGENT = random.choice(USER_AGENT_LIST)

  

第二种方式 写一个自己的randomUseragent中间件 并且在setting里面启用 ,但是要修改顺序靠前,比如100 或者直接把默认启用的user_agent 设置为None

第三种方式 直接继承默认的userAgent中间件,然后改写方法

中间件可以用faker来实现  或者自己招个列表也可以

def process_request(self,request,spider):
request.headers.setdefault('User-Agent',self.fake.user_agent())

最新文章

  1. 比管理员(administrator)更高权限的TrustedInstaller
  2. spring框架学习(四)自动装配
  3. Slide-卡盘效果
  4. JavaScript学习笔记-setTimeout应用
  5. [LintCode] 3Sum 三数之和
  6. 解决python "Non-ASCII character"错误
  7. Hadoop集群(第6期)_WordCount运行详解
  8. Maven搭建webService (二) 创建服务端---使用web方式发布服务
  9. poj1050(nyoj104 zoj1074)dp问题
  10. POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】+【Garbow】
  11. react的初涉入
  12. 第4章 同步控制 Synchronization ----信号量(Semaphore)
  13. Netty2:粘包/拆包问题与使用LineBasedFrameDecoder的解决方案
  14. 牛人的blog,关于推荐,topic model的
  15. C# 创建Datatable 并插入数据
  16. 用python发送短消息(基于阿里云平台)
  17. Akka-CQRS(0)- 基于akka-cluster的读写分离框架,构建gRPC移动应用后端架构
  18. 刷完500道BAT面试题,我能去面试大厂了吗?
  19. 小谈UAT(验收测试)
  20. SSM框架应用

热门文章

  1. 《搭建个人Leanote云笔记本》
  2. Java源码之HashMap的hash篇
  3. 熬夜23天吃透,九大核心专题,成功收割了阿里、百度、美团3家offer
  4. Unity 自己使用顶点描绘圆形UI图片
  5. ES6 常用总结——第三章(数组、函数、对象的扩展)
  6. 快速上手开发——JFinal配置(全步骤图文解析)
  7. 【论文】The Road to SDN: An Intellectual History of Programmable Networks
  8. Redis学习(一)认识并安装redis
  9. NX导入DWG失败
  10. C语言专项错题集