爬虫——如何应对具有反爬机制的网站

🍅 写在前面
👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
                       LeetCode算法实例
                       Pytorch实战

目录

  • 总览
  • 一、定制 Requests Headers
  • 二、降低IP访问频率

总览

  网络爬虫无非就是利用计算机来模拟人打开网站,进而获取网站中自己所需要的各种数据信息,然后进行存储、处理、清洗后获得有效数据。这是我们常用的爬虫思路,但是目前很多网站都具有各种各样的反爬虫机制,我们又该如何应对呢?这里提供两种解决思路。

一、定制 Requests Headers

针对该思路主要有三种实现方法:

  1. 修改user-agent:储存的是系统和浏览器的型号版本,可以尝试不同的浏览器,通过修改它来假装自己是人。使用浏览器打开任意网页,点击f12,找到网络,再点击请求地址,往下滑就会看到该浏览器的user-agent,如下图。
    在这里插入图片描述

  2. 修改referer:告诉服务器你是通过哪个网址点进来的而不是凭空出现的,有些网站会检查。

  3. 带上cookie,有时带不带cookie得到的结果是不同的,尝试带cookie去“贿赂”服务器让它给你完整的信息。

二、降低IP访问频率

  很多网站喜欢监视某个ip的访问频率和次数,一但超过阈值,就会禁止你这个ip继续访问,这时候我们就得想办法降低自己ip的访问频率了。针对该思路主要提供一下解决方法:

  1. 主动休眠,可以在爬虫中设置一个sleep时间,以便在各个爬虫穿插休息时间,防止访问网站过于频繁,被发现。
  2. IP代理,题海战术,不仅仅只用我自己的IP去访问网站,使用大量可用的、不同IP去访问统一的网站,它总不会拒绝网站流量增长吧。但是,这种方法的前提是你得有足够多可用的IP地址供你使用,而这种ip代理池一般是需要花钱的。这里给大家提供一个前段时间做爬虫项目发现的免费IP代理池,有以上烦恼的小伙伴们都可以去试试,详细见下图。
    在这里插入图片描述

最后,如果上述方法都无效的话,那我推荐可以考虑考虑Selenium技术,它是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。详细教程再我另一篇文章当中提及,大家有需要的可以阅览:Python爬虫——Selenium

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

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

相关文章

web安全学习笔记(12)

记一下第十六节课的内容。 一、jQuery Ajax 我们要先下载jQuery。 首先我们转移到template目录下,准备把jQuery下载到这下面。 直接wget下来就可以了。 这样我们就下载好了jQuery,下面我们学习如何使用。 jQuery 调用 ajax 方法 格式:$.…

【前端面试3+1】16 TCP与UDP的区别、如何清除浮动、哪些原因造成阻塞页面渲染、【相同的树】

一、TCP与UDP的区别 TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的网络传输协议,它们有以下几点区别: 1、连接性: TCP是面向连接的协议,通信双方在…

视频拍摄知识+AIGC数据预处理

视角 参考链接:https://www.polarpro.com/blogs/polarpro/filmmaking-101-types-of-camera-shots-and-angles Low Angle Shot 低角度拍摄、horizontal Shot 平视、Dutch Angle Shot 荷兰角斜拍、High Angle Shot 高角度拍摄、Bird’s-eye / Aerial Shot 鸟瞰 / 航…

最大公约数和最小公倍数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现最大公约数函数&#xff1b; int max(int x, int y) {//初始化变量值&#xff1b;int judge 1;//运算&#xff1b;judge x %…

【智能算法】CEC2017测试集

目录 1.背景2.CEC2017测试集3.参考文献 1.背景 IEEE 国际进化计算大会&#xff08;IEEE Congress on Evolutionary Computation&#xff0c;IEEE CEC&#xff09;是进化计算领域中规模最大、影响最重要的会议之一。为了公平评估算法的优化性能&#xff0c;该会议在优化竞赛中提…

工作必备!快速了解多微信高效管理工具

在如今社交媒体和移动即时通信的时代&#xff0c;微信已成为人们工作和生活中不可或缺的一部分。而对于那些需要同时管理多个微信账号的用户来说&#xff0c;微信管理工具则是一项绝对必备的利器。 1、多微信同时登录 通过微信管理系统&#xff0c;我们可以在同一个界面内同时…

2024.4.18

思维导图 数据库 #include <myhead.h> //添加学生信息 void insert_stu(sqlite3* sq,char* errMsg) {char text[128];int ID,age,height;char name[10];scanf("%d%s%d%d",&ID,name,&age,&height);sprintf(text,"insert into Student values …

【论文速读】| 大语言模型是边缘情况模糊测试器:通过FuzzGPT测试深度学习库

本次分享论文为&#xff1a;Large Language Models are Edge-Case Fuzzers: Testing Deep Learning Libraries via FuzzGPT 基本信息 原文作者&#xff1a;Yinlin Deng, Chunqiu Steven Xia, Chenyuan Yang, Shizhuo Dylan Zhang, Shujing Yang, Lingming Zhang 作者单位&…

数学建模--蒙特卡罗法MATLAB代码保姆式解析

1.简单介绍 2.思想的实际运用 我们利用蒙特卡罗法的思想求解圆周率π的值&#xff0c;这里求得的肯定是近似值&#xff0c;我们是通过大量的模拟实验&#xff0c;利用概率求解的&#xff0c;但是这个值和我们的精确值之间还是有一定的误差的&#xff1b; 我们的思想就是在半径为…

npm怎么迁移到pnpm

下载的vue3模板用到了pnpm&#xff0c;就安装了一下 但是安装之后使用pnpm install 就发现包全被移动到ignored文件夹下面了,还报错 PS G:\Projects\gitProeject\TS_front> pnpm installWARN  Moving commitlint/config-conventional that was installed by a different …

基于springboot+vue+Mysql的论坛管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

清晰讲明 BFS实现的拓扑排序

前提&#xff1a; 图&#xff1a;就是结点和边组成的数据结构 有向无环图&#xff1a;就是每一个边都有方向&#xff0c;且无法构成一个环&#xff0c;只有没有环的图才能进行拓扑排序&#xff0c;所以拓扑排序也能用来证明该图有没有环 在有向无环图中有两个概念&#xff1…

原生支付宝小程序 - 获取“dom“元素

在支付宝中是不能获取到dom元素的&#xff0c;但是我门可以借助my.createSelectorQuery来实现 Page({data:{sq:{}},onLoad(){},onShow(){this.setData({sq: my.createSelectorQuery()})} })通过axml来查看 <view>{{sq}} </view>会发现它只是一个Object&#xff0…

面试算法-177-二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1 解 class Solution…

鸿蒙TypeScript学习第19天【命名空间】

1、TypeScript 命名空间 命名空间一个最明确的目的就是解决重名问题。 假设这样一种情况&#xff0c;当一个班上有两个名叫小明的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#xff0c;比如他们的姓&#xff0…

低成本的云MES更合适中小企业

长期以来&#xff0c;面对激烈的竞争压力&#xff0c;我国传统的制造企业逐渐从大规模、低成本向多品种、小批量、定制化转型&#xff0c;逐步由粗放式管理向精益化管理靠拢&#xff0c;如ERP、CAD、PLM、OA等多个信息化系统已在我国制造企业中得到了较为广泛的应用&#xff0c…

python 无处不在的二分搜索

我们知道二分查找算法。二分查找是最容易正确的算法。我提出了一些我在二分搜索中收集的有趣问题。有一些关于二分搜索的请求。我请求您遵守准则&#xff1a;“我真诚地尝试解决问题并确保不存在极端情况”。阅读完每个问题后&#xff0c;最小化浏览器并尝试解决它。 …

【个人博客搭建】(8)全局异常处理

1、net 8 webapi 全局异常处理: 在 .NET 8 WebAPI 中&#xff0c;全局异常处理可以通过实现**IExceptionHandler接口或使用IAsyncExceptionFilter接口来完成**。 首先&#xff0c;关于IExceptionHandler接口&#xff0c;它是ASP.NET Core中用于全局异常处理的新抽象。这个接口有…

【C++】priority_queue(优先级队列介绍、仿函数控制大堆小堆、模拟实现)

一、优先级队列 1.1介绍 优先级队列&#xff08;Priority Queue&#xff09;是一种特殊的数据结构&#xff0c;其并不满足队列先进先出的原则&#xff0c;它结合了队列和堆的特点&#xff0c;允许我们在其中插入元素&#xff0c;并且能够保证任何时候提取出的元素都是当前队列…

不同性能压测工具对比

阿里云PTS 性能测试PTS&#xff08;Performance Testing Service&#xff09;是阿里云一款商业化的性能测试工具。支持按需发起压测任务&#xff0c;可支持百万并发、千万TPS流量发起能力&#xff0c;100%兼容JMeter。PTS支持的场景编排、API调试、流量定制、流量录制等功能&am…