首页
关于
留言
友情链接
推荐
粽子SHOP
Search
1
粽子SHOP即时到账 微信插件(MyWechat)
5,399 阅读
2
PS人像美颜插件 DR5.0增强版 一键人像磨皮/美白/高低频
4,771 阅读
3
Windows Navicat Premium16.3.2 免安装 绿色汉化版
4,061 阅读
4
彩虹聚合登录API源码/上元二开 QQ互联分发
3,442 阅读
5
LayuiTable导出所有数据,无需修改后端代码
2,699 阅读
程序源码
PHP源码
HTML源码
精品程序
易语言源码
Python源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
登录
Search
标签搜索
python
docker
typescript
swoole
thinkphp6
php
R语言
composer
composer命令
tp6
tp中间件
vue
node.js
粽子shop
thinkSwoole
微信监控
timi
王者荣耀
王者荣耀ios扫码
layer
烂掉的ay
累计撰写
106
篇文章
累计收到
1,195
条评论
首页
栏目
程序源码
PHP源码
HTML源码
精品程序
易语言源码
Python源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
页面
关于
留言
友情链接
推荐
粽子SHOP
搜索到
2
篇与
逆向
的结果
2025-06-03
知网滑块验证 解密 文献爬虫 数据抓取
最近需要抓取知网的文献资料,但是在打开文章时,会重定向到一个验证网址,并弹出一个滑块,让你进行验证。打开控制台,抓取两个接口获取滑块信息https://kns.cnki.net/verify-api/get这个接口会返回滑块图片信息(jigsawImageBase64、originalImageBase64),以及token、secretKeybase64 就是两张图片,一张是大图,一张是小图。token 需要提交给验证接口secretKey 参与坐标加密验证滑块信息https://kns.cnki.net/verify-api/web/check这个接口需要提交一些参数,最重要的是 pointJson这个是由坐标信息:{"x":0,"y":5} 和 secretKey 进行加密之后的结果{dotted startColor="#ff6c6c" endColor="#1989fa"/}{mtitle title="下面是一些重要的部分"/}识别小图在大图中的位置可以使用 opencv-python 包, 附带函数:''' 识别滑块位置 ''' def find_template_position(self,big_img_base64, small_img_base64): # 将 Base64 字符串解码为图像数据 def base64_to_image(base64_str): # 去掉可能的头部信息(如 "data:image/png;base64,") if "," in base64_str: base64_str = base64_str.split(",")[1] # 解码为字节数据 img_bytes = base64.b64decode(base64_str) # 转换为 numpy 数组 img_array = np.frombuffer(img_bytes, dtype=np.uint8) # 用 OpenCV 解码图像 img = cv2.imdecode(img_array, cv2.IMREAD_GRAYSCALE) return img # 解码 Base64 并转为灰度图 big_img = base64_to_image(big_img_base64) small_img = base64_to_image(small_img_base64) # Canny边缘检测 edges_big = cv2.Canny(big_img, 50, 150) edges_small = cv2.Canny(small_img, 50, 150) # 轮廓匹配 res = cv2.matchTemplate(edges_big, edges_small, cv2.TM_CCOEFF_NORMED) _, _, _, max_loc = cv2.minMaxLoc(res) return max_loc生成客户端ID在获取滑块信息时,要提交一个 clientUid 参数,但是好像使用固定的也没关系''' 生成客户端ID ''' def generate_clientUid(self): hex_digits = '0123456789abcdef' uuid_chars = [] # 生成 32 个随机十六进制字符(无分隔符) for _ in range(32): uuid_chars.append(random.choice(hex_digits)) # 固定版本号和变体标识位(符合 UUID v4 规范) uuid_chars[12] = '4' # UUID 版本位 uuid_chars[16] = hex_digits[(int(uuid_chars[16], 16) & 0x3 | 0x8)] # 变体位 return ''.join(uuid_chars)pointJson 加密方式point = {"x": x + 3, "y": 5} # x轴+3 y轴固定为5 # 转为json格式并进行加密 json_str = json.dumps(point, separators=(',', ':')) pointJson = self.encrypt_point_json(json_str, verify_data['secretKey']) print(f"识别滑块坐标:{point} 坐标加密:{pointJson}")pointJson 加密函数隐藏内容,请前往内页查看详情验证成功在滑块验证成功后,需要携带 captchaId访问文章,就可以免验证了。returnUrl = check_reslut_data.get("returnUrl") returnUrl = f"{returnUrl}&captchaId={check_reslut_data['captchaId']}"行为异常如果出现行为异常,也需要进行滑块验证,但是这个滑块是单机的,也就是说可以忽略。抓取页面的v-value ,访问下面这个地址,就会返回一个可以访问的文章地址。隐藏内容,请前往内页查看详情本文仅学习研究记录。
2025年06月03日
15 阅读
1 评论
0 点赞
2024-03-11
抖音 记一次 X-bogus 逆向分析
记录一次抖音 X-Bogus 研究过程隐藏内容,请前往内页查看详情{dotted startColor="#ff6c6c" endColor="#1989fa"/}{dotted startColor="#ff6c6c" endColor="#1989fa"/}将X-Bogus放入实际案例中测试导入js库import execjs with open("1.js") as f: js_code = f.read() f.close() js_compile = execjs.compile(js_code)接口 -> 获取粉丝列表https://www.douyin.com/aweme/v1/web/user/follower/list/Cookiecookies = { "stream_player_status_params": "", "sid_guard": "", }参数params = { "device_platform": "webapp", "aid": "6383", "channel": "channel_pc_web", "user_id": "XXXX", "sec_user_id": "XXX", "offset": "0", "min_time": "0", "max_time": "1710210938", "count": "20", "source_type": "1", "gps_access": "0", "address_book_access": "0", "pc_client_type": "1", "version_code": "170400", "version_name": "17.4.0", "cookie_enabled": "true", "screen_width": "1440", "screen_height": "900", "browser_language": "zh-CN", "browser_platform": "MacIntel", "browser_name": "Chrome", "browser_version": "122.0.0.0", "browser_online": "true", "engine_name": "Blink", "engine_version": "122.0.0.0", "os_name": "Mac OS", "os_version": "10.15.7", "cpu_core_num": "4", "device_memory": "8", "platform": "PC", "downlink": "10", "effective_type": "4g", "round_trip_time": "100", "webid": "XXX", "msToken": "1", }请求结果 成功总结这里的粉丝分页不是 offset ,而是 max_time 。这个值可以取返回参数中的 min_timecookie只用到了 stream_player_status_params 和 sid_guardmsToken不校验,但是参与生成XB。其他参数没有测试{dotted startColor="#ff6c6c" endColor="#1989fa"/}小白研究,欢迎大佬指教小白研究,欢迎大佬指教小白研究,欢迎大佬指教
2024年03月11日
464 阅读
12 评论
0 点赞