JS逆向——综合实战

7 篇文章 3 订阅
5 篇文章 1 订阅
本文讲述了在分析Q3JhenkgUHJvTW9ua2V5网站时遇到的验证码验证和加密挑战,作者详细描述了解码过程,包括Base64和MD5操作,以及如何通过Python和JS逆向技术破解ticket加密,以便正常请求数据。
摘要由CSDN通过智能技术生成

声明:本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!!


练习网站:Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LmVtcy5jb20uY24vcXBzL3lqY3gvIw==

网站分析:

点击查询,出现验证码校验,如图

校验通过后,可以查看以下接口返回信息

其请求参数如图

初步判断,我们只需要将验证码校验通过,然后拿着校验通过后返回的capcode值去请求查询接口即可(不排除还有其他反爬限制手段)

那么,我们先进行验证码校验。同小编前面的验证码实战文章相似,我们对验证码进行跟栈找到滑块和背景图的图片字节流的具体处理过程。如下图所示,我们可以看到,两个图片也都是进行了base64操作,这和前面的实战操作相同(字节流转换图片储存本地,利用ddddocr求滑块偏移量),小编这里就不作过多讲解了

 当我们求出偏移量后,尝试第一次实现正常请求,却发现并不能正常得到查询结果,如图

但是我们的post请求参数是没问题的

            capcode, xpos = self.get_img_info()
            data = {
                "value": [
                    {
                        "ip": "39.110.120.19",
                        "xpos": xpos,
                        "capcode": capcode,
                        "mailStatus": "a",
                        "orderNum": [
                            phone_num
                        ],
                        "orderType": "1",
                        "appleFlag": None
                    }
                ],
                "list": [
                    phone_num
                ]
            }

 然后,我们就需要仔细检查是否存在其他反爬措施。果然,在查询接口的请求头部分,出现了类似加密值

我们就尝试找到他们的加密入口,判断请求头具体校验了哪些参数。经过跟栈,我们找到了入口位置,这里可以发现,服务器端是校验了ticket参数和时间戳,也能看出ticket的A值是和上图中是相同的

那么我们只要破解ticket加密过程即可,观察A值所需用到的前边参数的值,再观察加密值长度等,可以判定出使用了原生的md5和base64加密,如下图

 那么,我们就可以复现加密了

const CryptoJS = require("crypto-js");

function fjm_sdk(phone, capcode) {
    var r = Date.now().toString(),
    l = r.substring(0, 3),
    c = r.substring(r.length - 10),
    p = "053B245CB1B74EBBB5FBB4A5889D66B8",
    d = capcode,
    h = phone + l + p + c + d,
    g = CryptoJS.MD5(h).toString().toUpperCase(),
    m = CryptoJS.MD5(g).toString().toUpperCase(),
    A = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(encodeURIComponent(m)));
    return [r, A]
}

得到请求头校验值之后,我们就可以正常进行网站请求了,如图

那么,今日的分享就到这里,想要学习更多的python爬虫和js逆向的相关技巧和知识的小伙伴们一定要点下关注哟,后期会不定时分享相关干货内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy ProMonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值