JB的Python之旅-爬取phizhub网站

栏目: Python · 发布时间: 5年前

内容简介:先说明,本文是水文,跟Python也没关系的,写着Python,是因为jb用py写爬虫比较多;本文只是简单介绍个网站如何爬虫的思路,文章很短,1分钟看完,没啥特别的,完~为什么要说这是,是因为今早在某群看到有同学问,访问接口没有数据,是啥问题;

先说明,本文是水文,跟 Python 也没关系的,写着Python,是因为jb用py写爬虫比较多;

本文只是简单介绍个网站如何爬虫的思路,文章很短,1分钟看完,没啥特别的,完~

讲故事啦

为什么要说这是,是因为今早在某群看到有同学问,访问接口没有数据,是啥问题;

JB的Python之旅-爬取phizhub网站

第一反应就是,请求参数不对,但接着该同学说,参数都一样的,还是没数据;

JB的Python之旅-爬取phizhub网站

刚好看到了,就试试吧,打开首页,是个表情包的网站,够骚的~

JB的Python之旅-爬取phizhub网站

常规操作, Chrome F12-network,选择XHR ,现在一般网站都是ajax加载图片的,所以直接选择xhr了,刷新网页,这不就有数据了吗?

JB的Python之旅-爬取phizhub网站

逐个点击看返回的内容,不难找到图片地址;

JB的Python之旅-爬取phizhub网站

这样,接口地址也出来了:

http://www.phizhub.com/phiz/get_phiz_list/?category=-1&page=1&last_time=0&page_size=40
复制代码

后面的参数,不纠结,把这个地址放到Chrome上访问,发现居然是没数据:

JB的Python之旅-爬取phizhub网站

行吧,可能是因为请求时需要特定的参数,用postman模拟一波,按照上面看到的参数搞一波,发现还是没有数据:

JB的Python之旅-爬取phizhub网站

一开始以为参数不对或者有遗漏,检查一遍发现还是不行,那就说明,可能是 服务器有检验机制 了;

先看了一下body,那4个参数都很正常,可以排除了;

JB的Python之旅-爬取phizhub网站

再看看请求头,看到一个 sss 参数跟 timestamp 参数,其他参数看着都正常;

JB的Python之旅-爬取phizhub网站

首先,这个 sss 可能性很大,因为这命名很奇怪,另外,校验时间戳,也合理;

刷新几次网站,发现这两个参数都是会变化的,因此更加怀疑了;

每次刷新都能正常显示,当时自己模拟的时候又不行,参数肯定是没错的,这是不是说明,有 时效性限制

既然有这样的怀疑,就测试一下吧,刷新网页,把 ssstimestamp 的值复制到postman模拟,经过几次,偶然发现居然可以的;

JB的Python之旅-爬取phizhub网站

同样的参数,再post一次,发现就返回空数据了,就证实了 时效性校验 的机制,而且这个时效性极短,5秒内!

参数逻辑

下面讲讲这两个参数的逻辑;

时间戳,一般是当前时间戳,拿去转化看看,发现就是当前时间,无难度:

JB的Python之旅-爬取phizhub网站

问题就在 sss 这个玩意,这种情况只能找源码,那怎么看?

首先,返回到这个页面,此时,红框里的就是需要分析的接口;

JB的Python之旅-爬取phizhub网站

那把鼠标移动到右侧的 jquery-1.8.3.min.js 文件,此时会弹出一堆js文件;

JB的Python之旅-爬取phizhub网站

逐个找,点击一个你觉得很大可能跟数据有关的文件,这里不难看出,就是 get_data ,那就点击右侧的js文件吧;

JB的Python之旅-爬取phizhub网站

点击后,直接跳转到这里, sss 对应的是代码的 abc ,而abc是get_abc函数生成的,而且需要时间戳做参数;

JB的Python之旅-爬取phizhub网站

一般情况下,浏览器默认是非调试状态,那就点击右上的按钮,暂停下吧;

JB的Python之旅-爬取phizhub网站

点击后,会自动打开一个文件,乱七八糟一大堆,不想看;

JB的Python之旅-爬取phizhub网站

既然不想看,就返回到刚刚那个js文件吧,然后把鼠标移动到 get_abc 函数上;

JB的Python之旅-爬取phizhub网站

然后点击,逻辑不就出来了吗?

JB的Python之旅-爬取phizhub网站

因此,这两个参数的逻辑如下:

function current_timestamp(){return(new Date).getTime()};
# 当前时间戳

function get_abc(a){return $.md5("phizhub_abc_"+a)}
# sss就是phizhub_abc_+当前13位时间戳拼接而成的md5
复制代码

故事完,可以愉快啪啪啪了,脚本没有,纯提供分析思路;


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML 5实战

HTML 5实战

陶国荣 / 机械工业出版社 / 2011-11 / 59.00元

陶国荣编著的《HTML5实战》是一本系统而全面的HTML 5教程,根据HTML 5标准的最新草案,系统地对HTML 5的所有重要知识点进行了全面的讲解。在写作方式上,本书以一种开创性的方式使理论与实践达到极好的平衡,不仅对理论知识进行了清晰而透彻的阐述,而且根据读者理解这些知识的需要,精心设计了106个完整(每个案例分为功能描述、实现代码、效果展示和代码分析4个部分)的实战案例,旨在帮助读者通过实......一起来看看 《HTML 5实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具