python爬虫反虫之setcookie

article/2025/6/19 10:53:42
作者原文传送
littleywww.littley.top

反爬表现

在使用python或rust进行爬虫的时候的有时会遇到请求返回一段含有只含有js代码的html页面如图:
在这里插入图片描述

分析及优化文件

首先解决转义字符\x63\x73\x4b,转义字符可以通过console.log()打印出来,最方便方式是打开f12控制,将字符贴到console窗口中可以直接转义,下面附图是通过火狐的控制台打印的

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看出\x63\x73就是cs
不过这样一个一个转换比较麻烦,可以到https://tool.lu/js去转换,不过这个工具对于有些代码转换的不够好,可以把源文件只格式后手动替换这些转义的代码,转换并替换后如下图

在这里插入图片描述

经分析js文件大体分为四部分
一、全局变量arg1与_0x4818
其中变量arg1是是用来解密的一个参数,这个参数每次加载文件返回的该值都不一样,变量_0x4818是一个初始解密参数数据,该参数经过(function(param, number) { } (arrayParam, 0x15b));初始化后会扩充调用 _0x4db1c函数来扩充_0x4818数组,用于后面的解密用相关代码如下

(function(param, number) {        
var _0x4db1c = function(_0x48181e) {while (--_0x48181e) {param['push'](param['shift']());}console.log(param);};  略。。。。。。。} (arrayParam, 0x15b));

二.初始化函数(function(param, number) { } (arrayParam, 0x15b));

      var _0x4a2aed = function() {var _0x124d17 = new RegExp("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}");return _0x124d17['test'](_0xb8360b['removeCookie']['toString']());};_0xb8360b['updateCookie'] = _0x4a2aed;var _0x2d67ec = '';var _0x120551 = _0xb8360b['updateCookie']();if (!_0x120551) {_0xb8360b['setCooki2e'](['*'], 'counter', 0x1);} else if (_0x120551) {_0x2d67ec = _0xb8360b['getCookie'](null, 'counter');} else {_0xb8360b['removeCookie']();}

通过中函数 _0x4a2aed中的正则表达式可以看出是一个代码格式检查,就是用于防代码格式化,_0xb8360b[‘removeCookie’]'toString’就是对removeCookie函数直接格式化检查,如果进行了格式化那么_0x120551 值 为flase,这时程序会进入循环,至到浏览器崩溃,即然他只对removeCookie函数的格式进行了断判那么我们只需要把removeCookie函数放到一行即可即

 'removeCookie': function(){return 'dev';},

这样整个(function(param, number) { } (arrayParam, 0x15b));可以正常运行,通过dubug也可看到_0x4818数得到了扩充.接下来我看先分析reload()与setCooki2e()
三.reload()与setCooki2e()函数

 function setCooki2e(name, value) {var expiredate = new Date();expiredate.setTime(expiredate.getTime() + (3600 * 1000));document.cookie = name + "=" + value + ";expires=" + expiredate.toGMTString() + ";max-age=3600;path=/";}function reload(x) {setCooki2e("acw_sc__v2", x);document.location.reload();}

这段代码很好理解就是reload调用setCooki2e设置了一个key为acw_sc__v2值为x的cookie值,那么问题来了谁调用了reload()函数,全文搜索reload,仅在l函数据中查到reload附图

在这里插入图片描述经分析arg2值主要是由arg1 _0x5e8b26 _0x23a392算出,其中变量_0x5e8b26内容如下var _0x5e8b26 = _0x55f3('0x3', 'jS1Y');也就是准确的说arg2是由 _0x55f3函数算出来的,而且数参数值已给出,即然这样我们直接写个函数调用l()函数就能得到arg2的值,也就是cookie acw_sc__v2的值。注:l()的第一句有个while函数,去掉即可while (window[_0x55f3('0x1', 'XMW^')] || window['__phantomas']) {};
四._0x55f3涵数
_0x55f3的返回值 主要与如下参数有关 ,只保存与这两参数相关的代码其他内容删掉即可

var _0x48181e = _0x4818[_0x4c97f0];_0x55f3['rc4'] = _0x232678;

测试

在文件加了个input标签用来测试
在这里插入图片描述
在这里插入图片描述
拿生成的acw_sc__v2值设置到爬虫请求中可加载数据,如果要动态获取acw_sc__v2值,python可以用PyExecJS或selemium来获取,如果使用rust的话可以使用https://github.com/atroche/rust-headless-chrome

相关资料https://blog.csdn.net/fm345689/article/details/100559159

作者原文传送
littleywww.littley.top

http://chatgpt.dhexx.cn/article/cxU9YvDo.shtml

相关文章

java 数据抓取 动态获得cookies里变动的属性_Java爬取CSDN博客遇到setCookie问题

最近有一个需求就是爬取CSDN上的数据,但是目前遇到了一个问题就是关于获取CSDN的cookie的问题。到目前为止并没有什么好的办法。希望大家可以给我留言,我们一起探讨。。 在我没有设置cookie的时候,会报以下错误。 function setCookie(name,va…

js的cookie操作

cookie.js: //这个cookie的js代码借用的老外的,我加了中文注释--原文:http: //www.echoecho.com/jscookies02.htm ///设置cookie function setCookie(NameOfCookie, value, expiredays) { //参数:三个变量用来设置新的cookie: //cookie的名称,存储的Cookie值, …

蓝牙 宽带通话 (wide band speech)WBS 剖析(一) -- profile层

一.概述 WBS(wide band speech)通俗来讲就是蓝牙宽带通话,通话数据frequency 16K,采用msbc编解码(chip中实现) 和NBS(narrow band speech)相对,NBS通俗来讲是窄带通话&a…

通话参数配置的经验和技巧

整体的通话信号流程如下: MIC采集信号 -> 放大器 -> ADC采集 -> 通话MIC数字增益 -> AEC算法 -> ANS降噪算法 -> 通话MIC后端数字增益 -> 通话EQ -> 蓝牙上行。 配置中如图所示: MIC去直流fliter配置:MIC高通flite…

CHOLAN:一种模块化实体链接方法

CHOLAN: A Modular Approach for Neural Entity Linking on Wikipedia and Wikidata 论文链接:https://arxiv.org/abs/2101.09969 (EACL 2021) 代码实现:https://github.com/ManojPrabhakar/CHOLAN ABSTRACT 本文作者提出了实现在知识库上进行端到端…

高清语音技术(WBS)及其在手机和蓝牙耳机中的实现

高清语音也被称为宽带语音,是一种能为蜂窝网络、移动电话和无线耳机传输高清、自然语音质量的音频技术。与传统的窄带电话相比,高清语音很大程度上提高了语音质量,减少了听觉负担。 通信产业链上的所有网络和设备都需支持高清语音才能体现出该…

蓝牙编码格式Codec的优先级配置

【Bluetooth】Android版本所支持的蓝牙协议code查询 Android版本所支持的蓝牙协议code查询方法: 协议配置文件有2个,一个是谷歌源生的,一个是高通自己添加的。 优先级:高通 > 谷歌。对于同一种协议会进行覆盖。 其中&#xff…

基于Android Q的蓝牙通话无声问题

分享一下这几天改蓝牙通话无声的bug,文章有点长,希望各位看官看完能帮助到大家—今天分析的主题是蓝牙通话没有声音之运行流程分析 一. 结果说在前面 ​ 蓝牙通话分别有七个阶段,基本上每个阶段都会走到底层,把数据回调到上层&a…

BQB pts测试

测试BQB的pts dongle是在蓝牙SIG官网买的,链接是 https://store.bluetooth.com/12210888/orders/d3b63cfd9d3d5a22c2e08ad9711a91c4 pts dongle最新的测试结果 ACS-BV-07-I/ACS-BV-12-I/ACS-BI-13-I 这三个是接完电话就fail ICA-BV-02-I/TCA-BV-01-I 这两个是挂不了电话 ICR-B…

蓝牙btsnoop log,HFP协议连接流程详解,以及RFCOMM连接和常用AT指令

HFP(Hands-Free):蓝牙免提协议,两个角色AG,HF端,AG端通常是手机设备,HF免提端一般为耳机车载等,hfp的连接首先要进行SDP,然后建立RFCOMM,然后SLC连接完成,HFP…

蓝牙协议HFP(Hands-Free Profile)电话免提协议 Connection management 连接管理HFP SLC 的建立跟释放

零. 概述 本文章主要讲下电话免提协议HFP(Hands-Free Profile)Connection management。包括connection establishment 跟connection realease,那connection establishment又会涉及到HFP SLC的建立过程。 本节讲解的内容就是一下HFP fea…

蓝牙A2DP和HFP编解码

一、A2DP A2DP全名是(Advanced Audio Distribution Profile) 蓝牙音频传输模型协定,提供通过蓝牙连接传输音频流的能力,比如手机播放音乐,蓝牙耳机通过蓝牙连接听歌。 mp3和flac音频编码都是在PCM音频编码基础上二次编…

Rockchip安卓11.0 16k wbs msbc HFP PCM语音通话支持

Rockchip安卓11.0 16k wbs/msbc HFP PCM语音通话支持 调试平台: 安卓11.0, rk3328, 博通ap6212芯片, HFP 8K已经调通的情况下. SDK修改支持16k wbs/msbc HFP PCM语音注意点如下: 1. bluedroid(system/bt) 博通方案中, ESCO_DATA_PATH_PCM 为1代表蓝牙芯片作为pcm master, 6…

蓝牙电话之HFP-电话音频

蓝牙电话之HFP协议中的电话音频 蓝牙技术通信的内容多种多样,其中音频部分包含媒体音频和电话音频。 媒体音频:播放蓝牙音乐的数据,这种音频对质量要求高,数据发送有重传机制,从而以l2cap的数据形式走ACL链路。编码方…

VSCode 按下tab键自动补全功能失效

问题描述:标签自动补全插件已经安装,某天按下tab键自动补全标签的功能突然失效了。解决方法: 1、找到路径 file > Preferences >settings 2、搜索tabs,选择Extensions里面的Emmet,将复选框的√打上就ok啦!