web逆向-字体反爬(一)
题目地址:http://www.glidedsky.com/level/crawler-font-puzzle-1
写一下之前处理过的两个字体反爬实战,也是很常见的一种反爬类型,这是第一篇
先来看一下题目
源码拿到的数字,和实际显示在网页的数字,明显不一样的
注意到两个现象
每一次刷新,源码中的数字就跟着变动,说明每请求一次页面,就使用了新的ttf字体文件
数字看起来无序,其实是有映射关系的,比如 122 变成了 277,226 变成了 773
所以这里的解题思路就是,解析ttf文件,得到数字之间的映射关系,然后结合网页源码提取到的数字,就能获取真实的数字了
作者已经提示,ttf文件内嵌在源码的base64中
复制那一大串字符,进行解码,然后保存成 ttf文件:
1234content = base64.b64decode(b64_str)with open("page-1.ttf", "wb") as f: f.write(content)
使用专门的字体查看工具打开文件,这里我使用的是 FontCreator 9.1
通过比对网 ...
Python编程技巧(二)
pip 笔记pip 和pip3 的区别
如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用
若只存在一个python版本,可以认为在用系统中pip和pip3命令都是相同的
更新依赖 pip3 install cloudscraper --upgrade 或者 -U
列出所有依赖 pip3 list
指定国内源
临时,或在requirements.txt开头加一行
1-i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
永久
在pip.ini文件配置
1234[global]index-url = https://pypi.doubanio.com/simple/[install]trusted-host = pypi.doubanio.com
pip全局配置
1pip config set global.index-url https://pypi.tuna.tsinghua ...
web逆向-2captcha破解极验文字点选
来写一下令爬虫工程师闻风丧胆的极验验证码的绕过方案,对接的是一个俄罗斯的打码平台 2captcha
先来看案例,网址:https://account.quandashi.com/
在登录账号的时候,会弹出极验的点选验证码
应对这种相对专业、更新频率较高的验证码,还是直接对接打码平台比较高效,首先就是在2captcha注册一个账号,充值,然后对接文档2captcha的接口文档
通过查阅文档,我们得知,极验的验证过程,无非就是获取 challenge gt api_server,发送到接口后返回 validate seccode ,然后拿到这两个参数去验证的过程
接下来,我们通过抓包分析各个参数的获取过程
challenge 和 gt
从抓包得知,这两个参数可以从 /gee-test-code 接口获取,实现代码:
1234def get_gt_challenge(): api = f"https://account.quandashi.com/passport/gee-test-code?t={round(time.time() * 10 ** 3) ...
web逆向-七猫网acw_sc__v2参数逆向分析
目标链接:https://www.qimao.com/shuku/a-a-a-a-a-a-a-click-1/
直接请求的话,没有返回网站内容,而是一大串混淆过后的js代码
重新启动一个无痕浏览器,观察一下请求时候链接的跳转、cookies的变化等
自动跳转的第二次请求就正常返回内容了,而且cookies中多了三个参数,其中acw_tc aliyungf_tc 是第一次请求返回的,这里忽略,只有 acw_sc__v2是从其他地方生成的,跳转过程中没有引入其他的js文件,所以可以肯定就是第一次请求返回的js代码生成的
话不多说,直接来上手分析代码
起手就是一个大数组,这里凭经验判断,代码是经过了 ob混淆,即 JavaScript Obfuscator
去 de4js网站做一个简单的还原
这里就是入口了,是调用 reload函数 进行赋值的,把代码放入vscode调试一下,首先找到reload调用的地方
把自执行和setInterval的无效代码去掉
直接运行代码,把我的系统卡死了 😇🐶 应该是那里进行了死循环
还是现在浏览器调试一下吧,先打开开发者模式,然后输入网址,自 ...
web逆向-css偏移实战(二)
题目看上去很简单,拿到5页的所有数字算总和就行,来分析一下
看到数字不是文本的形式,而是经过 base64编码的图片形式,有些图片的 style属性中有display: none,表示该图片不予展示,观察 ajax 接口返回的源数据,看到是直接返回 html源码,还有key、value 等字符串,暂时不明确这些的用途
对比渲染前后的html数据,有如下的不同点:
img_number 后疑似 md5编码(长度为32)的字符串不见了
style 属性多了 display
在这里猜测是根据不同的img_number值来判断该图片节点是否给予展示,因为返回的图片节点数量明显大于网页所展示的数量
直接全局搜 img_number,发现只有一个结果,加断点调试:
到这里逻辑就很清晰了,上面的操作就是:
把info即 原始html数据赋值给 $('.number')节点,也就是 <tr class="number">
根据 key 和 value 先进行 base64编码 再进行 MD5加密,计算出 j_key,只要是class值 ...
web逆向-css偏移初体验
整理一下之前做过的两道Css偏移的题,顺便巩固一下前端的知识
GlidedSky Css反爬题目:
从这里可以看到,各个小标签和显示的数字不是一一对应的,不过大标签的数量是对应的,都是12个,通过观察发现,里面混合了偏移、伪类、透明度等属性,我们一个一个来看:
伪类(::before)
这个标签里面又没任何内容,只有一个 ::before 的字样,这是个什么东西呢?
在css中,::before 是一个伪类元素,利用::before可以把需插入的内容插入到元素的其他内容之前,需要配合content属性来指定内容的值。传送门
所以只要找到 content 值就行了,直接拿 class值去搜索:
爬取的时候只要提取出 content 就行了
透明度(opacity)
有的标签只有两个数字,却有三个标签,比如上图的8透明度为0,在网页完全是不显示的,这是通过设置opacity(取值0-1)来实现的,爬取的时候需要把这些标签识别出来,然后剔除掉
偏移(left)
观察上图,按照标签地顺序,网页显示的值应该是 512 才对,但因为 left属性作了偏移,才显示为 152
看到left ...
APP逆向-知识点总结
安卓工具网站:https://www.androiddevtools.cn/index.htmlADB下载:https://blog.csdn.net/x2584179909/article/details/108319973
adb shell命令集合
adb调试夜神模拟器
打开USB调试,切换到/Nox/bin文件夹,运行 adb devices 命令就行,不行就重启模拟器
查看当前包名和主Activity
1adb shell dumpsys window | findstr mCurrentFocus
查看当前最顶层活动调用类
1adb shell dumpsys activity top
安装无签名apk(xposed模块):apk install -t xxx.apk
显示设备无权限 unauthorized:https://www.cnblogs.com/cooraa/p/15691093.html
ddms查看当前页面的调用栈
需要 Android Studio < 3.2 版本
Android Trace 分析代码流程
没什么用,不如直接Hook类下面的 ...
基于Hexo、Butterfly、Github的建站笔记
从零开始
Butterfly 官方文档
【紀錄】由零開始,Github + Hexo (Butterfly theme) 搭建個人博客 | 我的倉庫 | ouoholly
十分钟搭建个人博客(Hexo + GithubPage + AWS Route53) MartinM Blog
Hexo-Butterfly主题博客搭站记录 | 无境
Butterfly主题安装文档(三)之主题配置2_风如也的博客
2024.10 魔改
博客魔改教程总结(一) | Fomalhaut🥝
fomalhaut1998/hexo-theme-Fomalhaut: 🥝的网站源码
hexo 常用命令参考:https://segmentfault.com/a/1190000002632530
hexo init 初始化
hexo server 启动服务
hexo g -d -m "cxs" 博客发布更新
hexo clean 清除缓存,网页正常情况下可以忽略此条命令
hexo new page xxx 创建新页面
hexo new post "xxx ...
web逆向-七麦signature参数分析还原
前言想写这篇主要是七麦网的加密方式比较有趣,有挺多值得深究的地方,在文章中我会一步步用python还原,并介绍一些加密的知识,那么话不多说,let the hacking begin !
调试七麦网基本每个数据接口都需要带上 analysis参数,不然就会返回 Access Error
直接全局搜analysis基本没有线索,说明七麦把这个键值做了隐藏,直接xhr下断点
断住了,接下来就是观察变量和追踪 Call Stack了
在 promise 异步请求的 interceptors 中发现可疑点,打个断点试试
promise 是 ES6 新增的一个用于处理异步任务的javascript类,因为js代码是单线程执行的,很多浏览器事件都必须异步执行(传送门)
12// promise 执行并打印结果window.PSign.sign(cxs).then(function(e) {console.log(e.h5st)});
interceptors 即Axios(一个基于 promise 的 HTTP 库)的拦截器模式,分成两种,分别是request请求拦截器和r ...
Tortoise git 设置 v2ray 代理
github这阵子又抽风了,有时能连上有时连不上,时不时就unable to access...
想起电脑之前装了 v2ray,也有稳定的节点,就研究了一下怎么给 tortoise git 设置代理
打开 tortoise settings ,找到网络选项卡
然后根据你的 v2ray http 实际端口进行配置,记住不是socks5端口,如图:
终于连接成功: