伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用ip来伪装请求直接将自己的浏览器信息给伪装也是可以的。

第一中方法:

1.在setting.py文件中加入以下内容,这是一些浏览器的头信息

USER_AGENT_LIST = ['zspider/0.9-dev http://feedback.redkolibri.com/',                    'Xaldon_WebSpider/2.0.b1',                    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)',                    'Mozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)',                    'Speedy Spider (Entireweb; Beta/1.3; http://www.entireweb.com/about/search_tech/speedyspider/)',                    'Speedy Spider (Entireweb; Beta/1.2; http://www.entireweb.com/about/search_tech/speedyspider/)',                    'Speedy Spider (Entireweb; Beta/1.1; http://www.entireweb.com/about/search_tech/speedyspider/)',                    'Speedy Spider (Entireweb; Beta/1.0; http://www.entireweb.com/about/search_tech/speedyspider/)',                    'Speedy Spider (Beta/1.0; www.entireweb.com)',                    'Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)',                    'Speedy Spider (http://www.entireweb.com/about/search_tech/speedyspider/)',                    'Speedy Spider (http://www.entireweb.com)',                    'Sosospider+(+http://help.soso.com/webspider.htm)',                    'sogou spider',                    'Nusearch Spider (www.nusearch.com)',                    'nuSearch Spider (compatible; MSIE 4.01; Windows NT)',                    'lmspider (lmspider@scansoft.com)',                    'lmspider lmspider@scansoft.com',                    'ldspider (http://code.google.com/p/ldspider/wiki/Robots)',                    'iaskspider/2.0(+http://iask.com/help/help_index.html)',                    'iaskspider',                    'hl_ftien_spider_v1.1',                    'hl_ftien_spider',                    'FyberSpider (+http://www.fybersearch.com/fyberspider.php)',                    'FyberSpider',                    'everyfeed-spider/2.0 (http://www.everyfeed.com)',                    'envolk[ITS]spider/1.6 (+http://www.envolk.com/envolkspider.html)',                    'envolk[ITS]spider/1.6 ( http://www.envolk.com/envolkspider.html)',                    'Baiduspider+(+http://www.baidu.com/search/spider_jp.html)',                    'Baiduspider+(+http://www.baidu.com/search/spider.htm)',                    'BaiDuSpider',                    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) AddSugarSpiderBot www.idealobserver.com',                   ]2.在spider同级目录下建立一个MidWare文件价里面写一个HeaderMidWare.py文件 内容为

 1 # encoding: utf-8
 2 from scrapy.utils.project import get_project_settings
 3 import random
 4
 5 settings = get_project_settings()
 6
 7 class ProcessHeaderMidware():
 8     """process request add request info"""
 9
10     def process_request(self, request, spider):
11         """
12         随机从列表中获得header, 并传给user_agent进行使用
13         """
14         ua = random.choice(settings.get('USER_AGENT_LIST'))
15         spider.logger.info(msg='now entring download midware')
16         if ua:
17             request.headers['User-Agent'] = ua
18             # Add desired logging message here.
19             spider.logger.info(u'User-Agent is : {} {}'.format(request.headers.get('User-Agent'), request))
20         pass

View Code

3.在setting.py文件中添加

DOWNLOADER_MIDDLEWARES = {    'projectName.MidWare.HeaderMidWare.ProcessHeaderMidware': 543,}

第二种方法:fake_userAgent的使用
fake_userAgent是github上的开源项目1.安装fake_userAgent
pip install fake-useragent
2.在spider同级目录下建立一个MidWare文件价里面写一个user_agent_middlewares.py文件内容为
 1 # -*- coding: utf-8 -*-
 2 from fake_useragent import UserAgent
 3
 4 class RandomUserAgentMiddlware(object):
 5     #随机跟换user-agent
 6     def __init__(self,crawler):
 7         super(RandomUserAgentMiddlware,self).__init__()
 8         self.ua = UserAgent()
 9         self.ua_type = crawler.settings.get('RANDOM_UA_TYPE','random')#从setting文件中读取RANDOM_UA_TYPE值
10
11     @classmethod
12     def from_crawler(cls,crawler):
13         return cls(crawler)
14
15     def process_request(self,request,spider):  ###系统电泳函数
16         def get_ua():
17             return getattr(self.ua,self.ua_type)
18         # user_agent_random=get_ua()
19         request.headers.setdefault('User_Agent',get_ua())
20         pass

3.在setting.py中添加

  RANDOM_UA_TYPE = 'random'##random    chrome

  DOWNLOADER_MIDDLEWARES = {

  'projectName.MidWare.user_agent_middlewares.RandomUserAgentMiddlware': 543,

    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,

}

fake_userAgent伪装代理就配置好了,与第一种方法相比不用写一大串的浏览器头,那些浏览器头会在

https://fake-useragent.herokuapp.com/browsers/0.1.7 中得到。

在第一次启用fake_userAgent的时候会有一些错,我认为是项目请求网络时需要缓存一些内容而导致的。

github地址:https://github.com/sea1234/fake-useragent

 

转载于:https://www.cnblogs.com/seablog/p/7050552.html

scrapy 伪装代理和fake_userAgent的使用相关推荐

  1. scrapy 伪装_Python scrapy 伪装代理和fake_userAgent的使用

    scrapy 伪装代理和fake_userAgent的使用 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用ip来伪装请求直接将自己的浏览器信息给伪装也是可以的. 第一中方法: 1. ...

  2. scrapy 伪装代理和 fake_userAgent 的使用

    From:https://www.cnblogs.com/hellangels333/p/8918938.html fake-useragent 下载 和 使用方法:https://pypi.org/ ...

  3. Scrapy框架爬取我爱我家二手房信息存储CSV、mysql(IP代理和User-Agent用户代理)

    有一段时间没出来活动了闲来无事弄个玩玩O(∩_∩)O哈哈~ 想必学过Scrapy框架的人都知道如何创建Scrapy和运行,那么我这里呢现将我创的框架展示一下 scrapy startproject p ...

  4. Scrapy伪装成随机浏览器

    好多小伙伴在Scrapy伪装成随机浏览器时,学习伪装浏览器但没开启中间件.现在博主利用空闲时间现在出个完整的教程. Scrapy伪装成随机浏览器实现过程如下,需要在middlewares.py代码中添 ...

  5. JDK动态代理和Cglib的动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...

  6. AspectJ和Spring AOP(java动态代理和CGLIB)简单介绍

    1.AOP介绍 什么是AOP:AOP就是面向切面编程.使用的背景: 1)我们的振隆维护着一千个方法,一天老板让振隆把这一千个方法都要加上事务代码(统一代码) 2)振隆咬咬牙,添加了一个新的方法,然后让 ...

  7. jdk动态代理和cglib动态代理的区别

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  8. 八 web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置 build_opener()初始化IP install_opener()将代理IP设置 ...

  9. Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)

    第一种代理即Java的动态代理方式上一篇已经分析,在这里不再介绍,现在我们先来了解下GCLIB代理是什么?它又是怎样实现的?和Java动态代理有什么区别? cglib(Code Generation ...

最新文章

  1. 教育部:国外经历不得作为高校招聘限制性条件
  2. excel 打开显示安装office自定义项 安装期间出错
  3. java云端部署_Jelastic Java云端平台
  4. PHP在程序处理过程中动态输出内容
  5. 小弟浅谈asp.net页面生成周期---上
  6. h5网站服务器配置,h5的web服务器配置
  7. 运算放大器由来及虚短虚断的讨论
  8. 趋肤效应实验报告_GB/T 4857.2
  9. Django 面试题
  10. Word365英文版,文字垂直居中
  11. Python定时爬虫脚本
  12. Jvav第一天学习内容
  13. APP开发者如何来实现视频聊天室功能
  14. 集成WEB服务器的蓝牙路由器及低功耗BLE WIFI 网络规划和实施
  15. 红色警戒2:罗曼诺夫的复仇(openRA) Linux安装指南
  16. js逆向-马蜂窝cookies分析
  17. E.04.08 They Survived Taiwan’s Train Crash. Their Loved Ones Did Not.
  18. 每月产量不均衡,怎样分摊费用更合理?
  19. 求平行四边形的面积。
  20. 智能地下水位监测系统解决方案

热门文章

  1. LeetCode刷题(25)
  2. android studio service directory path,Android Studio User目录缓存搬移到指定目录
  3. Redis开启远程访问,你需要注意这些问题
  4. JAVA正则提取字符串中的日期
  5. mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
  6. Linux(RedHat)下Weblogic 12C静默安装
  7. [Ext JS6]Ext.Template
  8. Windows 下使用ftp批处理脚本
  9. 网络编程1-初探winSocket
  10. android webview圆角,Android 实现一个通用的圆角布局