【问题标题】:How to prevent puppeteer from crawling my website content如何防止 puppeteer 抓取我的网站内容
【发布时间】:2023-01-09 00:43:05
【问题描述】:

我知道puppeteer是一个简单又很棒的工具,可以轻松获取网站数据

据我所知,如果是headless模式,会有很多属性和普通浏览器不一样

但是如果我用下面的方法将一个打开的浏览器链接到 puppeteer ,我就检测不到了?

第一:修改桌面谷歌浏览器快捷方式属性并打开浏览器 C:\Users\13632\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222

const axios = require('axios')
const puppeteer = require('puppeteer')
async function main() {

    const response = await axios.get(`http://127.0.0.1:9222/json/version`);
    const webSocketDebuggerUrl = response.data.webSocketDebuggerUrl;

    browser = await puppeteer.connect({
        browserWSEndpoint: webSocketDebuggerUrl,
        ignoreDefaultArgs: ["--enable-automation"],
        slowMo: 100,
        defaultViewport: { width: 1280, height: 600 },
    });

    
    let target = await browser.waitForTarget(t => t.url().includes("you url"))
    const page = await target.page();

    

}
main()

上面的方法是链接一个打开的浏览器,就是普通的谷歌浏览器。好像无法检测是不是自动化工具?有没有别的办法让我判断对方是人还是机器

【问题讨论】:

    标签: puppeteer


    【解决方案1】:

    浏览器分析和自动化检测(并击败它)是它自己的一个完整的子领域。一些驱动程序(chromedriver;我没有使用过 puppeteer)设置标志以指示自动使用,但这些很容易被击败。 (例如,请参阅 undetected chromedriver 以获取试图不被检测到的包。)

    然后是用户分析(机器人倾向于以可预测的方式点击)、在浏览器中运行 JS 以尝试检测环境、将 ip 列入黑名单(大多数机器人都在代理后面)等等。

    问问自己:你害怕什么?然后防御它。您放在 Internet 上的任何内容都可以而且将会被抓取,但是您可以使破坏性的事情变得困难,例如预订所有音乐会门票并以 500% 的加价转售。像这样的特定挑战有特定的答案;但是没有万无一失的方法来检测自动浏览器,这样做是浪费精力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多