绕过USTC的浏览器JS验证

前言 当我们去下载类似于 https://mirrors.ustc.edu.cn/debian-cd/12.10.0/amd64/iso-dvd/debian-12.10.0-amd64-DVD-1.iso 这样的大文件时,USTC大概率会给你一个这样的:正在验证你的浏览器 的页面 如果你正在使用一个浏览器,比如Chrome、FireFox等,那过几秒你就能看到文件被成功开始下载 但是,如果你正在使用wget等无JS特性的工具下载这类文件,你将会被网站服务器拒绝: ERROR 403: Forbidden. ~# wget https://mirrors.ustc.edu.cn/debian-cd/12.10.0/amd64/iso-dvd/debian-12.10.0-amd64-DVD-1.iso --2025-04-04 14:44:13-- https://mirrors.ustc.edu.cn/debian-cd/12.10.0/amd64/iso-dvd/debian-12.10.0-amd64-DVD-1.iso Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 2001:da8:d800:95::110, 202.141.176.110 Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|2001:da8:d800:95::110|:443... connected. HTTP request sent, awaiting response... 403 Forbidden 2025-04-04 14:44:14 ERROR 403: Forbidden. 在之前,如果我想要下载这类文件我都会使用浏览器去下载,但是今天我在向我的朋友对这件事发牢骚的时候他跟我说他绕过了 于是我便想深挖一下,然后发现其实根本不是什么JS验证!!! 分析 让我们首先打开这类链接,然后查询网页源代码 <h1>Verifying your browser</h1> <p>Additional verification is required for this file you requested.</p> <p>This page requires JavaScript. Please wait for a few seconds.</p> <div class="footer"> <p>Your IP address is 2409:8a30:320:6480:1c6e:aab8:b415:c4fa</p> </div> <script> document.cookie = "addr=2409:8a30:320:6480:1c6e:aab8:b415:c4fa; max-age=300"; setTimeout(function () { location.reload(); }, 2000); </script> 你会发现,代码其实非常简洁干练,如果你的浏览器支持JavaScript,浏览器则会将 addr=2409:8a30:320:6480:1c6e:aab8:b415:c4fa这一串内容写入你的Cookie,之后等待两秒重载页面,然后网站发现你携带了这个Cookie,就会让你成功下载了。反之,如果你的浏览器不支持JavaScript,就会触发403,导致无法下载 ...

April 3, 2025 · 2 min · 286 words