“反爬虫”与“反反爬虫”

news/2024/7/19 10:02:54 标签: 爬虫, python, http, 反爬虫, 反反爬虫
http://www.w3.org/2000/svg" style="display: none;">

爬虫

  1. 不返回网页:如不返回内容和延迟网页返回时间
  2. 返回数据非目标网页:如返回错误页、返回空白页和爬取多页时均返回同一页
  3. 增加获取数据的难度,:如登陆才可查看和登陆时设置验证码

不返回网页

爬虫发送请求给相应的网站地址后,网站返回404页面,表示服务器无法正常提供信息或服务器无法回应;
网站也可能长时间不返回数据,这意味着爬虫已经进行了封杀

  • 网站通过IP访问量反爬虫
    如果单个IP的访问量超过了某个阈值,就会进行封杀或要求输入验证码。

  • 网站通过session访问量反爬虫
    session对象存储特定用户会话所需的属性和配置信息;当用户在应用程序的web页面之间跳转时,存储在session对象中的变量将不会丢失,而是整个用户会话中一直存在下去。如果一个session的访问量过大,就会进行封杀或要求输入验证码。

  • 网站通过User-Agent反爬虫
    User-Agent表示浏览器在发送请求时,附带当前浏览器和当前系统环境的参数给服务器。

返回数据非目标网页

  • 爬取页面数据时返回的是错误信息或者是同一页的信息
  • 页面上的数据信息可以和html源码不一样,爬取下来的数字和真实的数字会不一样
  • 也可能呈现的部分文字和数字会用SVG矢量图来进行替代,用不同的偏移量显示不同的字符,导致会漏掉很多信息

增加获取数据的难度

网站可以通过增加获取数据的难度反爬虫,一般需要登陆后才能获得数据,而且还会设置验证码。

反反爬虫

修改请求头

对于User-Agent反爬虫方式,我们可以修改请求头,从而实现顺利获取网页的目的
https://img-blog.csdnimg.cn/a5f34c8777da414089a54d342ad9cb59.png" alt="在这里插入图片描述" />

https://img-blog.csdnimg.cn/ad20934373104bba96d5c7cfd0e9eb1b.png" alt="在这里插入图片描述" />

修改爬虫的间隔时间

爬虫运行的太过频繁会容易被反爬虫,所以我们要在两次访问之间设置一个间隔时间
https://img-blog.csdnimg.cn/cbf7eebc46564bb2a779bad5568f67a7.png" alt="在这里插入图片描述" />
但是如果使用一个固定的数字作为时间间隔,也可能被判断出是爬虫行为,因为真正的用户是不会出现如此精准的秒数间隔,所以,我们可以使用一个random()函数,让时间可以在一个较短的间隔内进行随机获取

使用代理

代理(Proxy)是一种特殊的网络服务,允许一个网络终端通过这个服务与另一个网络终端进行非直接的连接。
https://img-blog.csdnimg.cn/1a29801805d34ea5afd4de19f5051830.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARkFOQ1kgUEFOREE=,size_10,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述" />

python">import requests
link = "http://www.baidu.com/"
proxies = {'http':'http://xxx.xxx.xxx.xxx:xxxx'}
response = requests.get(link, proxies=proxies)

更换IP地址

  • 通过动态IP拨号服务器更换IP
  • 是通过Tor代理服务器的方法

http://www.niftyadmin.cn/n/891848.html

相关文章

97. 交错字符串

链接 题目. 难度: high 解答: 字符串相关的,咱首先想到的就是dp,这道题也很典型,递推逻辑是这样的:s1[:i] 和s2[:j]是否可以成为s2[ij-1]的交错字符串。 package mainimport ("fmt" )func isInterleav…

python解析网站BeautifulSoup

首先了解一下正则表达式解析网站 正则表达式是解析网站时必须要了解的,我们在提取网页中的数据时,可以先将源代码变成字符串,然后用正则表达式匹配想要的数据 模式描述.匹配任意字符,除了换行符*匹配前一个字符0次或多次匹配前一…

99. 恢复二叉搜索树

链接 题目. 难度: high 解答: morris遍历就是利用左子树的最右节点指向当前的节点,这样就可以直接使用 rightMost.Right访问到下一个元素,这样就实现了遍历。morris遍历空间复杂度是O1,但是时间复杂度是N*logN,算…

115. 不同的子序列

链接 题目. 难度: high 解答&#xff1a; dp用熟了反而觉得简单了。s字符串增加一个字符&#xff0c;要么这个字符与t的最后一个字符相同&#xff0c;要么不相同 package mainimport "fmt"func numDistinct(s string, t string) int {if len(s) < len(t) {r…

iptables防火墙主机访问外网

示例 现在假设一台主机有如下规则&#xff1a; iptables -P INPUT DROP iptables -A INPUT -p tcp --dport 22 -j ACCEPT 分析 现在&#xff0c;其他主机ssh登陆到这台防火墙主机是没有问题到&#xff0c;问题是这台机器可以访问其他到网络吗&#xff1f;答案是不行。因为当…

120. 三角形最小路径和

链接 题目. 难度: middle 解答&#xff1a; 这道题其实是一个典型的dp问题&#xff0c;下一层的路径和最小值要依赖上一层的路径和最小值&#xff0c;既可以由上到下又可以由下至上。但是这里我们只需要依赖上一层的数据&#xff0c;所以空间复杂度可以优化为只需要一层的…

123. 买卖股票的最佳时机 III

链接 题目. 难度: high 解答&#xff1a; 这道题我们可以拆开来看&#xff0c;如果只允许买卖一次&#xff0c;那么很简单了&#xff0c;所以我们可以简化为另外一个问题&#xff0c;分别求出在[0:i]以及[i1:]这两个数组里分别买卖一次。 package mainimport "fmt&q…

124. 二叉树中的最大路径和

链接 题目. 难度: high 解答&#xff1a; 这道题可以分解为子问题&#xff1a;以root开始的路径最大路径和是多少&#xff0c;及较容易想到的是先计算每一个节点开始的最大路径和&#xff0c;那么就需要一个map来保存临时的结果。难的是想到直接在计算路径和的过程中就算出…