Web scraping 有没有办法在不被验证码拦截的情况下抓取谷歌搜索结果?

Web scraping 有没有办法在不被验证码拦截的情况下抓取谷歌搜索结果?,web-scraping,puppeteer,recaptcha,google-search,Web Scraping,Puppeteer,Recaptcha,Google Search,比如说我想从搜索“hi google”中获取结果(只是一个例子)。我正在使用带有Node.js的puppeter进行刮取。我使用以下代码: const puppeter=require('puppeter'); scrape=异步函数(){ const browser=wait puppeter.launch({headless:false}); const page=wait browser.newPage(); 等待页面。转到(“https://www.google.com/search?q

比如说我想从搜索“hi google”中获取结果(只是一个例子)。我正在使用带有Node.js的puppeter进行刮取。我使用以下代码:

const puppeter=require('puppeter');
scrape=异步函数(){
const browser=wait puppeter.launch({headless:false});
const page=wait browser.newPage();
等待页面。转到(“https://www.google.com/search?q=hi+谷歌&rlz=1C1CHBF_Enus879&oq=hi+谷歌&aqs=chrome..69i57j0l3j46j69i60l3.1667j0j7&sourceid=chrome&ie=UTF-8“,{waitUntil:“networkidle2”});
等待page.setViewport({宽度:1366,高度:663});
wait page.waitForSelector('.xpd');
让数据=等待页面。评估(()=>{
returndocument.queryselectoral('.xpd')[16];
});
等待浏览器关闭();
返回数据;
}
刮
.然后(函数(结果){
控制台日志(结果);
})
当浏览器启动时,它会立即转到reCAPTCHA页面: 有没有办法超越这个问题?我在网上做了一些研究,但这些结果要么是1。非常理论化,我不知道如何在我的代码中实现这些,或者2。Python解决方案,我不确定其中一些解决方案在Puppeter中会是什么样子。我遇到的最有用的结果是随机地对抓取进行计时,以使请求看起来像人类一样,但正如您所看到的,即使只检索一个数据元素,它也不起作用,它会立即将您带到一个reCAPTCHA页面


谢谢。

这是由大量因素造成的

首先,你需要使用
木偶特效隐形
()

该库修补了检测木偶演员的最常用方法

其次,您还希望模拟真实的鼠标移动。我发现库
ghost cursor
对此非常有效()

然而,光靠这一点是行不通的。您还需要使用非垃圾邮件的住宅代理或理想的4g代理

4g代理根据位置和轮换使用一个共用系统,并在该区域网络上的所有移动数据用户之间共享

我建议使用英国或美国的代理,或者最好在本地构建自己的4g代理,以避免出现任何饱和

您仍然会遇到一些验证码,因此值得实施一个解决方案,例如2captcha

为了进一步提高您的成功率,您需要使用具有历史记录和合法或“养殖”活动的Google帐户cookie


附加到帐户的Cookie用于正常浏览的次数越多,会话的信任度就越高。

设置浏览器用户agent@0m3r谢谢你的建议。我尝试了这个,但是现在控制台中的输出是
{}
,而不是所需的搜索结果。我甚至用了额外的木偶演员,但它仍然无法修复。