python爬虫进阶,突破反脚本机制(反爬机制)

news/2024/11/18 16:32:43/

前言

相信大家在做爬虫或者自动化脚本时或多或少的都能遇到反爬机制(或者说反脚本机制),最常见的反脚本机制都是在登录时进行验证,据本人大量实战(帮粉丝写脚本)发现,基本上只要有点水平的网站都会有反脚本的机制,如果是大型网站那么他的反脚本机制将更加的强大和复杂。比如淘宝、12306这些,如果策略不够强大。那么在秒杀或者抢票时,正常的用户将毫无体验可言。本文将讲解如何突破一般的反爬机制。通过阅读本文,网络上80%的网站任你的脚本程序随意操作

反脚本机制

看得见的反脚本机制

1.低难度

图形验证码、有干扰线的图形验证码、计算图形验证码的结果、请求参数简单加密(每次加密结果相同)等。

2.中等难度

请求参数AES加密(每次加密结果不同)、boss的点击验证、拉勾的滑动验证、按顺序点击图片中的文字验证等。

3.高难度

百度的将图片旋转为正确角度验证、谷歌的点击存在某样东西的图片验证等。

看不见的反脚本机制

如果你觉得各大网站只用上面那些反脚本机制那你就太天真了。上面那些只是劝退一般的爬虫工程师,真正要拦住他们的还是这些。
1.比如一些秒杀商品,等到秒杀时间时才会生成该商品的参数,你不能提前得到该商品的参数就不能够狂刷数据包下单,时间一到等你获取这个参数的时间,正常用户已经秒杀完了,这就能达到反脚本的目的。
2.当你的访问速度过快或者脚本程序爬取数据的时候不像人类的行为,这时弹出一些验证方法或者给你返回错误或者无用的数据,甚至给出循环链接,让脚本程序进入死循环,从而达到反脚本的目的。
这只是列举一些常用的反脚本策略,实际上大型网站会比这些强得多

突破反脚本机制

1.低难度

1.对于简单的图形验证码,python的第三方库pytesseract就可以进行识别。
2.有干扰线的的网上也有对应的去除干扰线的算法,不过干扰线恶心一点的那些算法也不好使。
3.去除干扰线也没法识别的、需要计算图形验证码的。你可以将图片保存下来,手动输入通过验证。
4.对于请求参数简单加密的。直接抓包取出加密后的参数就可以了。
大部分网站都是没有反脚本机制,就算有,大部分也都是这种简单的。能突破这种低难度的,60%的网站你都可以用脚本程序去达到某种目的。

2.中难度

今天的重点:请求参数AES加密(每次加密结果不同)
该反脚本机制一般有以下特征:
1.输入框中输入相同的账号密码,但是每次发出去的请求参数都不一样。
2.除了我们输入的参数外,还会有一些不停变化的参数。
下面是某网站登录的请求参数,账号密码都是20001111。
第一次请求
在这里插入图片描述第二次请求
在这里插入图片描述当然,有一些简单一点的不是用AES加密,可能是随机生成的字符串加密等奇奇怪怪的算法。但是这都不影响,解决思路是一样的。

解决思路

解决这种反脚本策略需要一定的前端基础,该过程也被称之为前端逆向。

1.找到前端的加密算法

1.缩小范围
通过浏览器的调试器,查看前端代码,通过搜索关键字查找缩小范围。关键字一般就是加密、编码等词语的英文或者拼音,一般是英文,拼音还没遇到过。如encrypt、encode等。
在这里插入图片描述2.通过调试或者理解代码逻辑找到算法
一般会存在这很多关键字,有些地方一看就不是加密算法,然后不确定的在浏览器打上断点,跑一遍,继续缩小范围。因为有些代码是其他功能的,并不会执行。这时候基本上就能找到了。如果代码执行了,你也不确定的地方有多个,那就只能仔细阅读他的源码判断是不是加密了。
这是加密算法的部分截图
在这里插入图片描述

2.写出相同的算法

通过理解他的算法后写出相同的算法
在这里插入图片描述

3.获取算法所需要的参数

还记得前面提到的一直变化的参数吗?在该网站中那个参数是lt。但是经过调试后发现并不是,而是另外的参数pwdDefaultEncryptSalt。
在这里插入图片描述既然找到参数了,那把pwdDefaultEncryptSalt和lt的值拿到就可以了,lt用来发送,pwdDefaultEncryptSalt用来加密。
至此,脚本程序已经突破了反脚本策略,掌握以上的方法,80%的网站都不是问题

其他中难度和高难度

其他的我没动手实践过,但是应该是配合着selenium突破,因为这种他的请求参数往往很复杂,如果还坚持使用上一种方法那成本太高了。用selenium只需要模拟移动鼠标点击就可以了,滑动的就找缺口,然后模拟人类的行为进行滑动,滑动速度先快后慢。至于百度和谷歌那种太变态了,没思路。

结语

其实如果不是爬虫工程师的话能够突破低等和中等难度的已经够用了。对于低难度的可能我写的比较简单,但是有些基础的看了思路应该都能懂。对于中等难度的例子,说的也不是很详细。怎么说呢,个人经验吧,看到他我就想到这个机制可能是这样做的,然后就去验证自己的想法,然后就能突破他。毕竟你都知道他是怎么做的了,那基本也能知道怎么突破。可能我也是做开发的吧,换位思考一下如果是自己,自己怎么开发这个反脚本功能。就跟网络安全一样,如果你懂攻击那么自然懂怎么防御;你懂防御自然也懂怎么攻击,都是相通的。


http://www.ppmy.cn/news/851871.html

相关文章

内网穿透轻松突破内网服务器并远程控制

本期看点: 大家熟知远程控制软件有TeamVeiw,向日葵等等 这些使用起来便捷方便 而当你想单独远程访问公司内部OA系统 由于内部系统并没有在公网,所以无法访问 怎么解决呢? 依靠内网穿透软件来实现 内网穿透无需购买服务器&#xf…

ATR波段突破策略

来源:mc官网 区间突破最常使用在日内程序里,不过波段的程序使用起来也不差,基本逻辑就是由开盘向上涨多少要突破作多,向下跌多少要突破做空,很单纯,最主要的因素只有这个突破的临界点是如何决定? 基本突…

leaflet maxZoom突破18

在leaflet中,默认的maxZoom为18。当你设置的值大于18后,然后缩放地图,虽然地图做出了缩放效果,但是你会发现地图变成空白,且http请求并未触发19的请求。如果需要加载高于zoom:18的瓦片图,可以按…

c# 32位程序突破2G内存限制

起因 在开发过程中,由于某些COM组件只能在32位程序下运行,程序不得不在X86平台下生成。而X86的32位程序默认内存大小被限制在2G。由于程序中可能存在大数量处理,期间对象若没有及时释放或则回收,内存占用达到了1.2G左右&#xff…

人工智能推动基础科学理论突破 人工智能推动基础科学理论突破

遥想1969年,ARPANET(由ARPA创建)刚刚成立的时候,还只是美国国防部防止苏联打击的冷战产物。谁曾想在随后的半个世纪,由ARPANET转变而来的Internet竟掀起了如此巨大的波澜。2001年,全球市值最高的前五家公司…

Nginx TCP反向代理突破端口限制

目录 一:Nginx TCP反向代理 二:Nginx TCP反向代理安装与配置 2.1 Nginx下载和安装 2.2 Nginx的基本操作 2.3 Nginx TCP反向代理的基础配置 2.4 Nginx Stream配置 一:Nginx TCP反向代理 Nginx使用proxy_bind负载tcp socket,解…

2018,突破自我

2018年来了,零零后都要开始一批批跨越18岁,进入成年人的世界了。作为一个80后,在这新年上班的第一天,我必须得让自己保持“奋斗者”的状态,不断超越自己,不至于被这个时代落下。 2017的技术收获 在开启新的…

经典日内策略:ORB突破策略(期货)

在掘金终端示例策略和前期分享中,我们分享了很多经典日内策略,包括菲阿里四价策略、R-Breaker策略、空中花园策略和汉斯123策略等,在此我们进一步探究另一个经典日内策略:ORB突破策略。   ORB突破策略最早由美国基金经理托比于19…