Python爬虫实战:手动构造__jsluid_h与__jsl_clearance绕过反爬

Cora
Cora
发布时间:2026-10-12 | 2人浏览过
原创

本文详解如何利用Python构造__jsluid_h和__jsl_clearance字段以应对网站反爬机制。通过分析JS混淆脚本,复现__jsl_clearance的生成逻辑,并结合Js2Py获取Cookie,实现自动化的请求头构造,有效解决因Cookie频繁过期导致的爬虫中断问题。

在确保数据采集合规性的前提下,使用Python进行爬虫开发并非不可取,这有助于加速信息的流通与共享。本文将介绍一种相对复杂的反爬应对策略:手动构造Cookies。在正式实施之前,我们先对不构造Cookies时可能出现的异常情况进行简要分析,以便更直观地理解Cookies在维持会话中的关键作用。

该网站要求提供有效的Cookies才能正常返回数据,但其Cookies的有效期极短。若依赖浏览器开发者工具手动获取,再让程序运行数分钟后再次手动更新,这种反复的人工干预将使自动化爬虫失去意义。因此,必须对Cookies的生成机制进行深入分析。

从浏览器开发者工具中抓取的Cookies包含约10个字段,但经过多次测试发现,仅需保留两个关键字段即可使网站正常响应。这两个字段分别为__jsluid_h=011a522dbxxxxxxxxc1ce59d336e5e60和__jsl_clearance=1581880640.794|0|trTB4c6b%2BZpvxxxxxxxx8YqCOOo%3D(部分字符已做脱敏处理)。

测试结果显示,若在请求中未手动构造Cookies,服务器默认会返回__jsluid_h字段。

最初尝试将相关的JS脚本保存为HTML文件并在本地打开,发现浏览器陷入无限刷新循环,并未达到预期效果。随后对JS脚本进行逆向分析,原始代码为单行格式,经整理并添加变量名及日志输出后,大致结构如下:

打印第16行的cmd变量,发现其内容为另一段类似的脚本代码:

从输出可见,第二段脚本负责设置__jsl_clearence字段。尽管这些JS代码经过了混淆处理,但至此已能理清从发送请求到服务器返回数据的完整流程。在本地执行时出现无限刷新,是因为第二行的setTimeout设置了1.5秒后重新发起请求,而本地环境缺乏处理该请求的服务以终止循环,从而导致不断刷新。

在第一段脚本中,变量y包含了完整的JS代码,其中的变量名和关键字经过编码处理,变量x存储了用于替换的映射表,后续跟随解码函数。当前的核心问题转化为:获取第一段脚本中的cmd代码,执行该代码后,再提取第二段代码中document.cookie的内容即可。

由于缺乏Python与JS交互的经验,尝试使用PyExecJS和Js2Py均未能成功执行第一段脚本。最终,采用Python复现第一段脚本的逻辑,并利用Js2Py获取Cookie。在首次请求后构造Cookies,再次发起请求,即可成功获取数据:

def test():
  url = REQUEST_URL
  # url = 'https://www.baidu.com'
  request_header = get_header()
  html = requests.get(url, headers=request_header)
  print(html)
  jscode = html.text
  # print(jscode)
  # tryjs.get_cookies()为复现的js代码,以及用Js2Py获取cookies的代码
  request_cookies = try_js.get_cookies(jscode)
  request_cookies += ';__jsluid_h=' + html.cookies['__jsluid_h']
  request_header['Cookie'] = request_cookies
  print(request_header)
  html = requests.get(url, headers=request_header, timeout=5)
  print('new connection')
  print(html)
  print(html.text)

经过多轮分析与测试,上述代码成功实现了Cookies的自动构造。希望本文的学习内容能帮助读者掌握一种应对爬虫拦截、获取数据的新方法,鼓励大家动手实践。

关于利用Cookies应对Python反爬虫的知识点介绍至此结束。如需了解更多如何构造Cookies以应对反爬的相关内容,建议搜索本站历史文章或继续阅读后续系列文章。感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表