Com*_*ter -1 google-search recaptcha web-scraping puppeteer
假设我想从搜索“hi google”中抓取结果(只是一个例子)。我正在使用带有 Node.js 的 Puppeteer 进行抓取。我使用以下代码:
const puppeteer = require('puppeteer');
scrape = async function () {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto("https://www.google.com/search?q=hi+google&rlz=1C1CHBF_enUS879US879&oq=hi+google&aqs=chrome..69i57j0l3j46j69i60l3.1667j0j7&sourceid=chrome&ie=UTF-8", { waitUntil: "networkidle2" });
await page.setViewport({ width: 1366, height: 663 });
await page.waitForSelector('.xpd');
let data = await page.evaluate(() => {
return document.querySelectorAll('.xpd')[16];
});
await browser.close();
return data;
}
scrape()
.then(function(result) {
console.log(result);
})
Run Code Online (Sandbox Code Playgroud)
当浏览器启动时,它会立即转到 reCAPTCHA 页面:
有没有办法超越这个问题?我在网上做了一些研究,但这些结果要么是 1. 非常理论化,我不知道如何在我的代码中实现这些,要么 2. Python 解决方案,我不确定其中一些解决方案会如何傀儡师。我遇到的最有用的结果是随机定时抓取以使请求看起来像人类,但正如您所看到的,即使只检索一个数据元素也不起作用,它只会立即将您带到 reCAPTCHA 页面。
谢谢。
这要归结为很多因素。
首先,您需要使用puppteer-extra-stealth
(https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth)。
该库修补了检测 puppeteer 的最常见方法。
其次,您还想模拟逼真的鼠标移动。我发现该库ghost-cursor
非常适合(https://github.com/Xetera/ghost-cursor)。
然而,仅凭这一点是行不通的。您还需要使用非垃圾邮件住宅代理或理想的 4g 代理。
4g 代理在基于位置和轮换的池系统中工作,并在该区域该网络上的所有移动数据用户之间共享。
我建议使用https://rsocks.net UK 或 USA 代理 - 或者最好在本地构建您自己的 4g 代理以避免任何饱和。
您仍然会遇到一些验证码,因此也值得实施诸如 2captcha 之类的解决方案。
为了进一步提高您的成功率,您需要使用具有历史记录和合法或“人工”活动的 Google 帐户 cookie。
附加到帐户的 cookie 用于正常浏览的次数越多,您的会话就越受信任。
归档时间: |
|
查看次数: |
1919 次 |
最近记录: |