方法一:HTTP GET
async function getHTML(url: string) {
const res = await fetch(url);
return await res.text();
}
优点:最简单
缺点:无法应对复杂反扒机制
方法二:Web Archive
Web Archive 保存了互联网主流网站的大部分内容, 例如 https://web.archive.org/https://www.bbc.com/news/live/c625ex282zzt
代码如下:
async function getWebArchiveHTML(url: string) {
const res = await fetch("https://web.archive.org/" + url);
return await res.text();
}
优点:简单
缺点:可能没被收录,不是实时
方法三:Headless Browser
推荐几个库:
- Playwright
- Cloudflare Bypass,实测无法绕过 Cloudflare
- Another Cloudflare Bypass 可以大概率绕过 Cloudflare
- 也可以直接使用自用浏览器
优点:最有效,成功率最高
缺点:
- 内存占用高,延迟高
- 需要对抗反扒机制,例如浏览器指纹、Captcha/Challenge Bypass,这是一个双方都在进化的、长期的猫鼠游戏
实际方案
联合使用三种方法,可以兼顾效率和成功率 🤪