scrapy 伪装代理和fake_userAgent的使用
伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用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的使用相关推荐
- scrapy 伪装_Python scrapy 伪装代理和fake_userAgent的使用
scrapy 伪装代理和fake_userAgent的使用 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是很高可以不用ip来伪装请求直接将自己的浏览器信息给伪装也是可以的. 第一中方法: 1. ...
- scrapy 伪装代理和 fake_userAgent 的使用
From:https://www.cnblogs.com/hellangels333/p/8918938.html fake-useragent 下载 和 使用方法:https://pypi.org/ ...
- Scrapy框架爬取我爱我家二手房信息存储CSV、mysql(IP代理和User-Agent用户代理)
有一段时间没出来活动了闲来无事弄个玩玩O(∩_∩)O哈哈~ 想必学过Scrapy框架的人都知道如何创建Scrapy和运行,那么我这里呢现将我创的框架展示一下 scrapy startproject p ...
- Scrapy伪装成随机浏览器
好多小伙伴在Scrapy伪装成随机浏览器时,学习伪装浏览器但没开启中间件.现在博主利用空闲时间现在出个完整的教程. Scrapy伪装成随机浏览器实现过程如下,需要在middlewares.py代码中添 ...
- JDK动态代理和Cglib的动态代理
2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...
- AspectJ和Spring AOP(java动态代理和CGLIB)简单介绍
1.AOP介绍 什么是AOP:AOP就是面向切面编程.使用的背景: 1)我们的振隆维护着一千个方法,一天老板让振隆把这一千个方法都要加上事务代码(统一代码) 2)振隆咬咬牙,添加了一个新的方法,然后让 ...
- jdk动态代理和cglib动态代理的区别
一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...
- 八 web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置 build_opener()初始化IP install_opener()将代理IP设置 ...
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
第一种代理即Java的动态代理方式上一篇已经分析,在这里不再介绍,现在我们先来了解下GCLIB代理是什么?它又是怎样实现的?和Java动态代理有什么区别? cglib(Code Generation ...
最新文章
- 教育部:国外经历不得作为高校招聘限制性条件
- excel 打开显示安装office自定义项 安装期间出错
- java云端部署_Jelastic Java云端平台
- PHP在程序处理过程中动态输出内容
- 小弟浅谈asp.net页面生成周期---上
- h5网站服务器配置,h5的web服务器配置
- 运算放大器由来及虚短虚断的讨论
- 趋肤效应实验报告_GB/T 4857.2
- Django 面试题
- Word365英文版,文字垂直居中
- Python定时爬虫脚本
- Jvav第一天学习内容
- APP开发者如何来实现视频聊天室功能
- 集成WEB服务器的蓝牙路由器及低功耗BLE WIFI 网络规划和实施
- 红色警戒2:罗曼诺夫的复仇(openRA) Linux安装指南
- js逆向-马蜂窝cookies分析
- E.04.08 They Survived Taiwan’s Train Crash. Their Loved Ones Did Not.
- 每月产量不均衡,怎样分摊费用更合理?
- 求平行四边形的面积。
- 智能地下水位监测系统解决方案
热门文章
- LeetCode刷题(25)
- android studio service directory path,Android Studio User目录缓存搬移到指定目录
- Redis开启远程访问,你需要注意这些问题
- JAVA正则提取字符串中的日期
- mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
- Linux(RedHat)下Weblogic 12C静默安装
- [Ext JS6]Ext.Template
- Windows 下使用ftp批处理脚本
- 网络编程1-初探winSocket
- android webview圆角,Android 实现一个通用的圆角布局