在post请求构造data值得时候发现得加密

本文介绍了解决网页爬虫中遇到的动态加密参数问题的方法。通过分析网页源代码定位加密算法,利用Python的execjs库执行JavaScript代码生成所需参数,实现稳定的数据抓取。
部署运行你感兴趣的模型镜像

在采集网页得时候以为正常得网址,构造得时候只构造了当前页数,后来发现无法请求成功,然后发现传入的参数每次都会在你翻页的时候发生变化,好了下面我们来看
在这里插入图片描述
第一眼我们是不是以为都是正常的请求就行了,因为页码什么的都有,后来返现code这个参数一直发生变化,当时还以为是cookie的问题后来发现是js加密,后面我们找到js
在这里插入图片描述
肯定不是在jquery里面了,所以我就进去下面这个js去看,发现果然是这个在加密
在这里插入图片描述
通过看这里你应该就能看出来他的加密了,下面我们只需要调试就行了,调试发现这个值正是我们要传入的参数,我们拿到python中直接用就行了,其实我们不用自己去构造方法,因为太麻烦了,我们这里直接导入execjs这个包就行了
调用也特别简单,下面我们来看具体代码

import execjs
code = execjs.compile(
"""
var _0xodc = 'jsjiami.com.v6'
  , _0x5ad7 = [_0xodc, '\x70\x61\x72\x73\x65', '\x74\x6f\x53\x74\x72\x69\x6e\x67', '\x73\x75\x62\x73\x74\x72', '\x72\x61\x6e\x64\x6f\x6d', '\x6a\x44\x73\x55\x6a\x70\x4d\x54\x69\x4e\x64\x61\x57\x51\x56\x55\x48\x68\x6d\x69\x2e\x63\x6f\x6d\x2e\x76\x36\x3d\x3d'];
var _0x46dc = function(_0x19fd19, _0x5ad61f) {
    _0x19fd19 = ~~'0x'['concat'](_0x19fd19);
    var _0x2419ee = _0x5ad7[_0x19fd19];
    return _0x2419ee;
};
(function(_0x12a38e, _0x2b7e45) {
    var _0x52a640 = 0x0;
    for (_0x2b7e45 = _0x12a38e['shift'](_0x52a640 >> 0x2); _0x2b7e45 && _0x2b7e45 !== (_0x12a38e['pop'](_0x52a640 >> 0x3) + '')['replace'](/[DUpMTNdWQVUHh=]/g, ''); _0x52a640++) {
        _0x52a640 = _0x52a640 ^ 0x5aa0e;
    }
}(_0x5ad7, _0x46dc));
function createCode() {
    var _0x3904f2 = Date[_0x46dc('0')](new Date())[_0x46dc('1')]();
    var _0x846274 = randomCode(0x2, 0x8) + _0x3904f2[_0x46dc('2')](0x0, 0x1) + randomCode(0x3, 0x7) + _0x3904f2[_0x46dc('2')](0x1, 0x2) + randomCode(0x4, 0x5) + _0x3904f2[_0x46dc('2')](0x3, 0x3) + randomCode(0x2, 0x6) + _0x3904f2[_0x46dc('2')](0x6, 0x2) + randomCode(0x3, 0x7) + _0x3904f2[_0x46dc('2')](0x8, 0x1) + randomCode(0x2, 0x7) + _0x3904f2[_0x46dc('2')](0x9, 0x2) + randomCode(0x2, 0x6) + _0x3904f2[_0x46dc('2')](0xb, 0x2) + randomCode(0x3, 0x8);
    return _0x846274;
}
function randomCode(_0x67cf3f, _0x25a442) {
    return Math[_0x46dc('3')]()[_0x46dc('1')](0x24)[_0x46dc('2')](_0x67cf3f, _0x25a442);
}

"""
)
#这里直接去执行js里面的代码就行了
#这里是调用,不会的可以进行百度都有具体的教程的,包括传参
code.call('createCode')
#这样就完成了,我们把这个值传到data就ok了

好了,就写到这里了,希望能帮到你,记得点赞呦

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值