作者 原文传送
littley www.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

作者 原文传送
littley www.littley.top

python爬虫反虫之setcookie相关推荐

  1. python爬虫反爬对抗_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...

    你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 "知己知彼,才能那啥" 那么对于像猫眼电影.大众点评等等 那样的 c ...

  2. python爬虫反爬-python爬虫--爬虫与反爬

    爬虫与反爬 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封i ...

  3. python爬虫反爬策略_用Python语言做爬虫有哪些策略可以对抗反爬虫?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作为爬虫工程师,时常要为不断更新的反爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫 ...

  4. python爬虫反爬 css 知乎 专栏_python爬虫反反爬 | 像猫眼电影、大众点评等自定义 css 加密字体怎么破?...

    我们上次说了如何建立反反爬 当时还新建一个简单的帅b网页 具体可以戳以下链接 现在你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 &qu ...

  5. python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCl ...

  6. python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用

    我们中公优就业的老师希望能给那些面临困境的朋友们带来一点帮助!(相关阅读推荐:Python学习就看这里!) 爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具.爬虫的最基本就 ...

  7. python爬虫反爬机制_Python Scrapy突破反爬虫机制(项目实践)

    对于 BOSS 直聘这种网站,当程序请求网页后,服务器响应内容包含了整个页面的 HTML 源代码,这样就可以使用爬虫来爬取数据.但有些网站做了一些"反爬虫"处理,其网页内容不是静态 ...

  8. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  9. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)

    # I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...

  10. python爬虫反爬-爬虫怎么测试反爬?

    网站有没有反爬,如果你没有用爬虫抓取过,你是不可能知道的. 就算要测试,你还要尝试不同的delay. 如果设置的 delay 在网站的反爬频率外,那就测不出来. 如果在频率内,那就被封.或者封ip,或 ...

最新文章

  1. python创建进程的方法_python进程的状态、创建及使用方法详解
  2. Oracle中通过Job实现定时同步两个数据表之间的数据
  3. excel在线_功能强大的纯前端 Excel 在线表格: Luckysheet
  4. rsyslog收集nginx日志配置
  5. 微型计算机8位数据总线,微机原理答案1
  6. java web主流框架整合开发 光盘_开发者突击:Java Web主流框架整合开发(第2版)(附CD光盘1张)...
  7. 坐标转换计算七参数matlab代码,坐标系转换:已知控制点计算七参数并对数据批量转换...
  8. Migrations有两个文件迁移数据的方法
  9. 把14亿中国人民都拉到一个微信群里在技术上能实现吗?
  10. A-priori算法的优化实现
  11. 基于MySQL毕业设计题目50例
  12. 机器学习(Machine Learning) - 吴恩达(Andrew Ng) 视频笔记
  13. javaweb做什么能赚钱_做一个完整的Java Web项目需要掌握的技能
  14. 「好书推荐」《边城》沈从文的乡土情怀代表作,汪曾祺、林徽因、曹文轩等真情推荐!
  15. 2022仿淘宝网首页html+css
  16. 正味集团冲刺港股:年营收3.4亿杨声耀夫妇控制64%股权
  17. codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】
  18. Topcoder Open 2011 Qualification Round 3报告
  19. 【编译原理】交叉工具链详解
  20. 有个问题,win10系统,网络诊断,将来会自动连接到jinling,什么意思?

热门文章

  1. UWB定位系统中为何要加入陀螺仪
  2. 回归远程 - 云原生IDE是IaC从表象触达本质的必然选择 | SmartIDE
  3. MySql in子句 效率低下优化
  4. 思科路由器的基本配置
  5. 各省简称 拼音 缩写_中国省市县地区首字母缩写
  6. entity cannot be tracked
  7. [buuctf] crypto全解——85-120(不建议直接抄flag)
  8. Windows 11 配置使用 Edge 浏览器的 IE 兼容模式(永久)
  9. NVR和DVR有什么区别
  10. 中望3d快捷键命令大全_cad快捷键大全下载