*前面由于工作需要搜索建筑规范的时候无意找到了这个网站,一时兴起就研究了一下;现在把分析思路整理一下交流学习,因为非专业纯爱好,如有不足还请指教;
*目标网址:
aHR0cHM6Ly9vcGVuc3RkLnNhbXIuZ292LmNuLw==
目录:
一、验证分析
二、页面内容分析
三、整体流程分析
一、验证分析
*任意选了一篇可在线预览的规范;*先走一遍流程:点在线预览之后直接是验证码,输入正确验证码之后会加载规范内容;

001.png (41.78 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*然后想着看看源码:按F12无效,点击开发者工具直接跳转空白页; *看到这里反而增加了分析代码的信心,猜想源码应该不会太难; *使用Fiddler抓包发现两个反爬代码,一个跳转空白页,一个禁止F12;

002.png (49.46 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*然后Fiddler设置自动断点在请求之后,刷新页面,把这两段代码删掉,就可以打开调试了;(可以在Fiddler设置自动替换,不然每次刷新都要删一遍)

004.png (83.91 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*任意输入验证码后发现向该网址发送验证,验证失败返回error,验证成功返回success;

005.png (71.28 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*验证失败后会刷新图片,点击刷新会得到新的图片;

006.png (145.15 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*这里图片和验证肯定是有联系的,不然怎么知道验证的是哪张图片,所以想到查看cookie;

007.png (20.11 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*有两个参数,先看第一个参数,通过URL解码发现数据里有7个参数;

008.png (13.71 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*直接搜_yfx_firsttime代码,发现所有的参数都在这里;前5个是时间戳,第6个是固定值,最后是调用re()和oe()字符串组合;

009.png (79.36 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*根据逻辑转成python代码就得到了_yfx_cookie的值;

010.png (57.72 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*然后看JSESSIONID的值,搜了一遍发现没有,然后百度发现他是访问网页的时候生成在cookie里的,于是代码获取;

011.png (27.63 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*参数齐全写入cookie就可以请求验证码了,

012.png (93.76 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*返回验证结果,验证成功;

013.png (30.22 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*这时再次请求网址返回就是目标网页源代码了;

014.png (25.07 KB, 下载次数: 0)
下载附件
2025-1-25 16:11 上传
*验证就分析完了,然后进入页面内容的逻辑分析;
二、页面内容分析
*进入页面分析发现他是很多小图片拼在一起的,并且每一块都有编号;

015.png (116.77 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*然后翻到源代码,分析发现他的规则很清晰;

016.png (204.55 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*然后他前面已经把编码的规则排好了;

017.png (69.32 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*那就按他这个规则来写;

018.png (84.18 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*因为不同的规范他的小图高宽都不一样,但是又没有直接提取高宽的地方,所以提取所有页面的坐标排序筛选;

019.png (163.04 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*现在我们获取乱序大图,抓包发现;

020.png (91.94 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*我先是直接复制地址,发现网页不显示,然后带cookie和referer请求也不返回任何信息,查看抓包其他栏里面除了referer还有个chunked参数但不知道是啥,后来我想到他请求图片必然会在代码里面留下信息,于是我搜索了request;

021.png (111.54 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*于是添加请求头参数,设置允许重定向为False,结果保存成功;

022.png (38.77 KB, 下载次数: 0)
下载附件
2025-1-25 16:12 上传
*现在我们有了页码,有乱序大图,有小图编号,有位置坐标,就可以按规则还原了;

023.png (66.55 KB, 下载次数: 0)
下载附件
2025-1-25 16:21 上传
*最后完美还原;

024.png (88.13 KB, 下载次数: 0)
下载附件
2025-1-25 16:21 上传
三、整体流程
*从抓包来看(无关的我删了),从点击预览到加载内容的步骤如下:
1. 进入验证页面;
2. 获取验证码图片;
3. 输入验证码后提交验证,返回验证结果;
4. 验证成功后再次请求步骤1得到内容代码;
5. 请求乱序大图有一个重定向到目标webp;

025.png (85.29 KB, 下载次数: 0)
下载附件
2025-1-25 16:21 上传
以上就是所有内容了,不足之处希望大佬指点,也给其他感兴趣的朋友提供参考;