Python 爬虫进阶必备 | 某代理站免费代理加密逻辑分析

举报
xianyuplus 发表于 2021/03/22 15:24:01 2021/03/22
【摘要】 今日网站aHR0cHM6Ly93d3cuemRheWUuY29tL0ZyZWVJUExpc3QuaHRtbA==这个网站来自咸鱼的技术交流群抓包分析与加密定位这个网站是某代理商的免费代理页面,我们想要实现的就是这个页面上免费代理的提取。所以先看看反爬的措施是什么?可以看到 ip 在 response 中的展示的不全,ip 最后一位显示的是wait,通过排查 css 以及字体文件可以先得出一个...

今日网站

aHR0cHM6Ly93d3cuemRheWUuY29tL0ZyZWVJUExpc3QuaHRtbA==

这个网站来自咸鱼的技术交流群

抓包分析与加密定位

这个网站是某代理商的免费代理页面,我们想要实现的就是这个页面上免费代理的提取。

所以先看看反爬的措施是什么?

可以看到 ip 在 response 中的展示的不全,ip 最后一位显示的是wait,通过排查 css 以及字体文件可以先得出一个结果,这个反爬不是字体反爬或 css 反爬

为了确定这个反爬是不是js反爬,我们可以禁用当前网站的 js文件,查看页面的展示是否有变化。

当禁用了页面的js后,可以看到页面上展示的结果已经无法展示完整的 ip 地址了,所以可以判断页面上的ip展示是由 js 控制的

现在需要定位这个 js 逻辑的位置,先看看检索wait能不能找到有关的内容

这里直接说结果,检索的工作量太大了,90 个匹配项相关性都不大,所以先看看别的方法,如果都没有收获的话再回来继续分析。

通过上面这张图,看到替换的位置有v的值是很特殊的,不过经过上面的检索,想通过这个方法去找到加密的直接可以放弃了。

所以继续回到抓包界面试试看。

在抓包的界面里,认真分析还是可以看到一个相关项,这个请求链接长得很奇特。

这么一长串的链接就很可疑,不过这个请求返回的是一个数值没有太多有价值的信息,所以直接看看这个数值是具体用在哪里

因为是一个 xhr 请求,所以直接用 xhr 断点找就很方便

断点打上之后,就出现一些有意思的地方了

往上两个堆栈可以看到,返回值是需要经过一通操作才可以的

再网上看,可以看到这里的逻辑就比较显眼了,直接对 document 进行操作了

代码拿到 console 中测试可以获取到带wait的值

整个函数运行下来就可以直接获取到完整的ip

现在就只要找到这一套字符串替换的逻辑就可以获取完整的 ip 了

加密分析

先看请求的是怎么发出的,上面的图中前一段的domain是固定的

后一段的链接由两个参数拼接

这里未知的是mkshowmak这三个参数

这里的mk是固定值 = xxxmxxxxxxxxxm398mxxx1m402

后面发现这个值是经过加密的请求 ip

这里的ak是动态的,所以还需要构建一个请求动态获取

再来看看showm这个加密,选中即可跳转

这个比较简单直接扣取到 node 环境下运行即可

本地运算的结果如下

这样就可以得请求的链接获取这个请求返回的值代入运算

拿到这个值之后就可以看看接下来进行的操作了

接下来可以看到out()这个方法获取的是当前这个 ip 列表的长度

function out({
    var myTb = document.getElementById("ipc");
    if (myTb) {
        return myTb.getElementsByTagName("tr").length - 1
    } else
        return 0
}

经过out1()取出每一行 ip 中v的值,这个和我们抓包部分想要从v入手找加密逻辑相印证。

将这个值和上面构建请求获取的值,一起代入dsfgsd运算,就可以得出还原好的 ip 了

所以正确的请求顺序如下

1、请求 base.js 获取mkak这两个值,构造下面的请求,获取返回的值

2、请求免费代理的页面,获取带wait字符的ip还有对应的v

3、将每一个v和 1 中的返回的值,传入dsfgsd中计算,并将结果替换得出正确的 ip

虽然是免费的 ip 代理,不过站方这个思路可以说非常用心了

好了,今天的文章就到这里了,我们下次再会~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。