python模拟加密爬取诸葛

文章讲述了如何使用Python模拟特定的代码加密逻辑,首先通过get_arg1函数处理arg1,然后使用get_arg2函数结合密钥生成加密后的arg2,最终形成加密cookie。在获取到加密cookie后,将其添加到请求头中以正确地向目标网站发起请求,从而获得所需数据。文章还提到了前端反调试策略和代码混淆技术,并提醒在设置请求头时避免使用Host和Referer参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用python模拟代码加密逻辑

'''
获取arg1
'''
def get_arg1(arg):
    _0x4b082b = [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd,0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3, 0x1c,0x22, 0x25, 0xc, 0x24]
    _0x4da0dc = ['']*40
    _0x12605e = ''
    for _0x20a7bf in range(0,len(arg)):
        _0x385ee3 = arg[_0x20a7bf]
        for _0x217721 in range(0,len(_0x4b082b)):
            if _0x4b082b[_0x217721] == _0x20a7bf + 0x1:
                _0x4da0dc[_0x217721] = _0x385ee3
    _0x12605e = ''.join(_0x4da0dc)
    return _0x12605e

'''
获取arg2
'''
def get_arg2(_0x4e08d8,_0x23a392):
    _0x5a5d3b = ''
    _0xe89588 = 0x0
    while _0xe89588 < len(_0x23a392) and _0xe89588 < len(_0x4e08d8):
        _0x401af1 = int(_0x23a392[_0xe89588:_0xe89588 + 0x2],16)
        _0x105f59 = int(_0x4e08d8[_0xe89588:_0xe89588 + 0x2],16)
        _0x189e2c = hex(_0x401af1 ^ _0x105f59)
        if len(_0x189e2c) == 0x1:
            _0x189e2c = '\x30' + _0x189e2c
        _0x5a5d3b += _0x189e2c[2:]
        _0xe89588 += 0x2
    return _0x5a5d3b

def get_arg(arg):
    key = '3000176000856006061501533003690027800375'
    _0x23a392 = get_arg1(arg)
    arg2 = "acw_sc__v2=" + get_arg2(key, _0x23a392)
    return arg2

if __name__ == '__main__':
    text = requests.get(url='https://bj.xiaoqu.zhuge.com/chaoyang/',timeout=10).text
    time.sleep(1)
    arg = re.search("arg1=.*", text).group().split('\'')[1]
    get_arg(arg)

ok,此时我们可以获取到加密生成的cookie了,遵循网页的执行原理,将获取到的cookie加入到herders中再去请求

import requests
headers = {
            "Accept": 	"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Cache - Control": "max-age=0",
            "Connection": "keep-alive",
            "Sec-Fetch-Dest": "document",
            "Sec-Fetch-Mode": "navigate",
            "Sec-Fetch-Site": "same-origin",
            "Sec-Fetch-User": "?1",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36",
    		"Cookie":get_arg(arg)
        }
datas = requests.get(url='https://bj.xiaoqu.zhuge.com/chaoyang/',headers=hersers,timeout=10).text
print(datas)

此时获取的datas就是存在数据的页面,可以自行将所需要的数据提取出来,提取方法不再叙述

总结:

第一点就是有些网站会进行前端反调试,手段之一就是会检测开发者工具是不是打开,而且如果我们把代码拿到本地,竟然还会检测本地代码是否是展开的?第二点就是代码混淆的方式,有些网站会用_0xxxx等操蛋的符号以及使用16进制来迷惑我们,想要还原的话直接打印一下就可以,js也能读取16进制

注意:尽量不要在herders中加入HostReferer两个参数,平台的也不能使用,因为平台会根据这个来判断你是不是spider

?第二点就是代码混淆的方式,有些网站会用_0xxxx等操蛋的符号以及使用16进制来迷惑我们,想要还原的话直接打印一下就可以,js也能读取16进制**

注意:尽量不要在herders中加入HostReferer两个参数,平台的也不能使用,因为平台会根据这个来判断你是不是spider

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芦苇浮绿水

觉得还不错请博主喝杯饮料

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

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

打赏作者

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

抵扣说明:

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

余额充值