小工具      在线工具  汉语词典  css  js  c++  java

Scrapy添加随机请求头user_agent

Python 额外说明

收录于:42天前

一般情况下,为了避免服务器反爬虫,我们需要在发送请求时添加一些随机的请求头信息(headers),这样我们就可以轻松绕过服务器的反侦察手段。

因此一般只要在middlewares.py文件中新的加如下代码,然后每次request的时候,就会有随机的user_agent了,然后就可以有效的避免服务器反爬虫了。

#以下用于PC端请求数据,但网上有一些请求头是手机端的,要看清楚。 #因为一般请求头不一样,服务器返回的数据格式也是不一样,我们解析时的xpath也就不一样了
#1. 随机的Scrapy增加随机请求头user_agent
class MyUserAgentMiddleware(UserAgentMiddleware):
    '''
    设置User-Agent
    '''

    def __init__(self, user_agent):
        self.user_agent = user_agent

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            user_agent=crawler.settings.get('MY_USER_AGENT')
        )

    def process_request(self, request, spider):
        agent = random.choice(self.user_agent)
        #print('agent-----%s' %agent)
        request.headers['User-Agent'] = agent

    #以下用于PC端请求数据,但网上有一些请求头是手机端的,要看清楚。
    #因为一般请求头不一样,服务器返回的数据格式也是不一样,我们解析时的xpath也就不一样了
    MY_USER_AGENT = [
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:55.0) Gecko/20100101 Firefox/55.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:55.0) Gecko/20100101 Firefox/54.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:55.0) Gecko/20100101 Firefox/53.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:55.0) Gecko/20100101 Firefox/52.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:55.0) Gecko/20100101 Firefox/50.0",
        "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2306.400 QQBrowser/9.5.10648.400",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "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/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "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",
    ]


. . .

相关推荐

额外说明

SpringBoot实用教程(三)|集成百里香叶

Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全代替传统JSP 。 官方文档: Documentation - Thymeleaf 目录 一、初始化SpringBoot项目 二、引入依赖pom 三、appl

额外说明

C语言-宏的实现

写一个宏,计算结构体中某变量相对于首地址的偏移。 结果 #define struct(struct_type,numname) (size_t)&(((struct_type*)0)->numname) 实现过程 #include<stdio.h> #

额外说明

uniapp实战——创建项目和清理结构及配置基本外观

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

【虚拟仿真】Unity3D打包WEBGL实现全屏切换

推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 今天实现Unity3D打包WEBGL后实现按钮点击全屏

额外说明

idea 左下角的Git(Version Control)中显示Local Changes窗口

打开Local Changes窗口来查看当前Git仓库的本地变更。 解决: (1)idea打开settings (2)点击Version Control窗口选项卡,选择Commit选项,对 Use… interface 取消勾选。 (3) 查看Git中是

额外说明

Qt之QMediaPlayer音频播放

文章目录 前言 QMediaPlayer简介 QMediaPlayer使用方法 QMediaPlayList使用方法 简单的mp3播放器 总结 前言 Qt是一个流行的跨平台的GUI开发框架,也提供了许多常用功能的封装,其中包括音频播放功能。在这篇文章中,

额外说明

【全网最全面C语言教程】C语言从入门到精通

前言:本文讲的是我的一套课程,完全免费,下面放链接 更新时间:2天1期 打印hello world(基础) C语言数据类型之整形1(基础) C语言数据类型之整形2(基础) C语言之地址的概念(基础) C语言之变量的输入(基础) C语言数据类型之浮点数(小

额外说明

Java学习笔记8.2.2 JDBC实战 - GUI学生信息管理系统

文章目录 零、本讲学习目的 一、实训项目简介 二、项目思维导图 三、实训日志模板 四、实训报告模板 五、实训考核标准 六、项目开发指导书 零、本讲学习目的 让学生综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用

额外说明

第九章:vue2中路由的使用

vue适合做大型单页面项目,利用vue-cli构建项目的时候会提示是否安装路由模块参考中文文档 一、vue中路由的使用 1、定义组件 <template> <div class="hello"> <h1 @click="info" :class="c

ads via 小工具