【爬虫】User-Agent反爬虫

指服务器端通过校验usr-agent 来区分正常用户和爬虫程序的手段,是较为初级的爬虫。 一般是在做请求的 header 中。
user-agent 记录了请求的设备信息,如果在请求的时候没带 user-agent 可以视为爬虫故意请求,对这样的请求服务器可以拦截。

使用 user_agent 请求数据

import requests
api = "http://push2.eastmoney.com/api/qt/stock/get?ut=fa5fd1943c7b386f172d6893dbfba10b&invt=2&fltt=2&fields=f43,f85,f86," \"f46,f44,f51,f168,f47,f164,f116,f60,f45,f52,f50,f48,f167,f117,f71&secid=%s" % (secid)
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
}
res = requests.get(api, headers=headers, timeout=10).json()

Nginx 拒绝 user-agent 异常访问

1、进入nginx的配置目录,例如cd /usr/local/nginx/conf
2、添加agent_deny.conf配置文件 vim agent_deny.conf

#禁止Scrapy等爬虫工具的抓取
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {return 403;
}

常用的 user-agent

在实际爬取过程中,可能需要多个随机 user_agent ,下面给出可能需要用到的 user_agent,如果是分布式爬虫,随机取出一个 user_agent 放入 header 中

USER_AGENTS = ["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/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)","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_AGENTS)
request.headers["User-Agent"] = user_agent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Array(进阶)_Lambda表达式_冒泡排序_集合

文章目录 数组操作与高阶方法Lambda表达式Lambda表达式在C#中的应用及练习 数组排序:深入理解冒泡排序与选择排序冒泡排序原理 选择排序原理 选择排序和冒泡排序的区别 C#排序:掌握Sort()方法的使用集合类型全览:C#集合的使用详解C# 中的集合…

2024年阿里云数据库价格_云数据库收费标准最新

2024年阿里云数据库价格查询,云数据库优惠活动MySQL版2核2GB 50GB配置99元一年,续费不涨价,续费也是99元1年,云数据库MySQL基础系列经济版 2核4GB 100GB配置227元1年,RDS SQL Server云数据库2核4G配置299元1年&#xf…

【CSS】Vue2使用TailwindCSS方法及相关问题

一.安装 1.npm安装TailwindCSS npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^9 2.创建配置文件 npx tailwindcss init 3.创建postcss.config.js文件 // postcss.config.js module.exports {plugins: {t…

pymysql中怎么在插入的数据改成变量值

我这个是用pymysql数据库来写 mport pymysql # 连接到数据库 conn pymysql.connect(hostlocalhost, userusername, passwordpassword, dbdatabase_name) # 创建一个游标对象 cursor conn.cursor() # 准备插入语句 s1"""INSERT INTO 库名.表名 ( 这是表…

git的下载与安装

下载 首先,打开您的浏览器,并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统(Windows、macOS、Linux等)和位数(32位或64位),选择适…

阿里云关系型数据库RDS概述

阿里云关系型数据库服务(ApsaraDB RDS,Relational Database Service)是阿里巴巴集团提供的云端托管式关系型数据库产品,旨在帮助企业与开发者在无需自建和维护底层基础设施的情况下,轻松部署、管理和扩展关系型数据库。…

Android学习深入

性能优化 学习识别和解决常见的性能问题,如内存泄漏、布局优化等 Android性能优化是确保应用流畅运行、提升用户体验的关键。以下是关于如何识别和解决一些常见性能问题的指导,包括内存泄漏、布局优化等。 1. 内存泄漏 内存泄漏发生时,已…

Boost Graph Library中VF2(子图同构)算法的使用

Boost Graph Library,简称BGL,库中有各种各样经典的Graph算法,这里介绍其中的VF2算法——vf2_subgraph_iso。 数据怎么存 在BGL中,图是用adjacency_list类型数据存储,也就是邻接列表,里面可以存顶点信息&…

【C语言】数据结构和流程控制语句

C语言是一种广泛应用于系统编程和应用软件开发的高级编程语言。它提供了丰富的数据结构和流程控制语句,使程序员能够更有效地组织数据和控制程序的执行流程。本文将介绍C语言中常用的数据结构和流程控制语句,以帮助读者更好地理解和使用C语言。 1. 数据…

vue使用element-ui 实现自定义分页

可以通过插槽实现自定义的分页。在layout里面进行配置。 全部代码 export default { name:Cuspage, props:{total:Number, }, data(){return {currentPage:1,pageSize:10,} } methods: {setslot (h) {return(<div class"cusPage"›<span on-click{this.toBe…

E4-R升级固件方法 RockChip 3562

芯片&#xff1a;RockChip 3562 开发板 先安装驱动&#xff1a;DriverAssitant_v5.1.1 下载工具&#xff1a;RKDevTool_v3.13_for_window 烧录完整的update.img固件 1.选择update.img 2.关机下&#xff0c;同时Update和Power进入maskrom模式。界面会显示设备 3.点击升级 …

vue部署在nginx上的配置

1. vue中配置跨域后, 后端服务代理配置. 这里表示将所有的 /dev-api/ 开头的请求都转发到下面 proxy_pass 指定的链接中. 为了防止在访问页面时请求就被 Nginx 代理转发&#xff0c;这里需要更具体的配置&#xff0c;才能和前端访问请求区分开 2. Vue 路由刷新时可能会抛出 4…

【代码随想录算法训练营第二十七天 | LeetCode39. 组合总和、 40.组合总和II、131.分割回文串】

代码随想录算法训练营第二十七天 | LeetCode39. 组合总和、 40.组合总和II、131.分割回文串 一、39. 组合总和 解题代码C&#xff1a; class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& c…

avue-crud顶部操作按钮插槽;avue-crud列数据插槽;avue-crud行操作按钮插槽

1.avue-crud顶部操作按钮插槽&#xff1b; <template slot"menuLeft" slot-scope"{ size }"><div class"left"><div class"btn"><el-button type"primary" size"small" click"onBatchR…

新能源汽车小三电系统

小三电系统 新能源电动汽车的"小三电"系统&#xff0c;一般指车载充电机(OBC)、车载 DC/DC 变换器&#xff0c;和高压直流配电盒(PDU)。一辆纯电动汽车一般配备一台OBC 和一台车载 DC/DC 变换器。OBC将外部输入的交流电转化为直流电输出给电池&#xff0c;DC/DC衔接…

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…

使用stream流合并多个List(根据实体类特定属性合并)

开发情景 现有多个List集合,其中都是一样的实体类,这里我想根据实体类的特定属性将它们合并在一起,形成一个最终的List集合。 这里主要用到了Stream流的flatMap方法与reduce方法。 flatMap:可以将多个Stream流合并在一起,形成一个Stream流。 reduce:可以将Stram流中的元…

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

力扣经典题:删除字符使字符串变好

char* makeFancyString(char* s) {int sizestrlen(s);char*arr(char*)malloc(sizeof(char)*size1);if(size<3){return s;}arr[0]s[0];arr[1]s[1];int p2;for(int j2;j<size;j){if(s[j]!s[j-1]||s[j]!s[j-2]){arr[p]s[j];p;}}arr[p]\0;return arr; } 此代码的细节很多&am…

mac笔记本执行定时任务

1.mac本地设置一个定时任务每小时执行一次&#xff0c;在/Users/xxx/go/src/runing目录下执行命令&#xff1a;./git_push.sh 在macOS中&#xff0c;你可以使用crontab来设置定时任务。打开终端并执行以下步骤&#xff1a; 1.打开当前用户的crontab编辑器&#xff1a; crontab …