反反爬之绕过新版加速乐
字数 1222 2025-08-20 18:16:55
绕过新版加速乐反爬虫技术详解
1. 加速乐反爬机制概述
加速乐是知道创宇推出的网站CDN加速和安全防护平台,具有以下反爬特性:
- 首次访问返回加密JS,检查浏览器环境
- 符合预设才返回其他资源,否则返回521状态码
- 登录后返回关键cookie
jsl_clearance jsl_clearance每20-30分钟失效,需通过JS刷新- 新版加速乐增加了debug模式检测,非用户常用环境返回521
2. 传统绕过方法的局限性
使用Selenium等自动化工具存在以下问题:
- 指定
--user-data-dir会被识别为非用户常用环境 - 浏览器和驱动版本不匹配会导致接管失败
- 加速乐可能随时更新检测机制(如每次刷新都检查环境)
3. 创新绕过方案:利用真实浏览器环境
3.1 核心思路
直接读取用户日常使用的浏览器环境中的cookie,模拟真人操作:
- 在真实浏览器中登录账号
- 设置自动刷新机制保持cookie有效
- 程序读取本地cookie文件获取
jsl_clearance
3.2 Chrome Cookie获取与解密
Cookie文件位置:
C:/Users/[用户名]/AppData/Local/Google/Chrome/User Data/Default/Cookies
查询特定网站的cookie:
SELECT host_key, name, value, path, expires_utc, is_secure, encrypted_value
FROM cookies
WHERE host_key like "%目标网站%";
解密原理:
Chrome 80+版本使用AES-256-GCM加密cookie值,解密方法参考:
- 需要获取Chrome的加密密钥(通常存储在本地状态文件中)
- 使用Python的
pycryptodome库进行解密
3.3 自动刷新机制实现方案
方案一:JS控制iframe定时刷新
适用条件:网站存在点击劫持漏洞(允许iframe嵌入)
示例代码:
timeout=prompt("Set timeout (Second):");
count=0
current=location.href;
if(timeout>0)
setTimeout('reload()',1000*timeout);
else
location.replace(current);
function reload(){
setTimeout('reload()',1000*timeout);
count++;
console.log('每('+timeout+')秒自动刷新,刷新次数:'+count);
fr4me='<frameset cols=\'*\'>\n<frame src=\''+current+'\'/>';
fr4me+='</frameset>';
with(document){write(fr4me);void(close())};
}
防御方法:检查并设置X-Frame-Options头
方案二:代理注入刷新代码
实现方式:
- 搭建中转代理服务器
- 在返回的HTML中注入自动刷新代码
示例代码:
<script language="JavaScript">
function myrefresh() {
window.location.reload();
}
setTimeout('myrefresh()',300000); // 300秒刷新一次
</script>
方案三:Win32API模拟操作(未实现)
通过系统API模拟鼠标键盘操作实现刷新
4. 完整操作流程
- 在常规Chrome窗口中登录目标网站账号
- 设置自动刷新机制(JS或代理方式)
- 当检测到
jsl_clearance失效时:- 调用
get_cookie_from_chrome函数 - 从本地Cookies文件中读取并解密最新cookie
- 调用
- 使用获取的有效cookie进行爬取操作
5. 技术优势
- 完全使用真实用户环境,难以被反爬系统识别
- 不依赖浏览器自动化工具,避免版本兼容问题
- 适应加速乐的后续更新,可持续性强
6. 参考资源
7. 附件代码
提供的Python脚本jiasule.py包含完整的cookie获取和解密实现,可直接用于项目中。