Chrome 使用DataDome的网站在使用Selenium和Python进行抓取时被阻止验证码

neekobn8  于 2022-12-06  发布在  Go
关注(0)|答案(4)|浏览(1394)

我实际上是试图刮一些汽车数据从不同的网站,我一直在使用 selenium 与chromebrowser,但一些网站实际上阻止 selenium 与验证码验证(例如:https://www.leboncoin.fr/),而这只需要1或2个请求。我尝试在chromebrowser中更改$_ cdc,但这并没有解决问题,我一直在chromebrowser中使用这些选项

user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
options = webdriver.ChromeOptions()
options.add_argument(f'user-agent={user_agent}')
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument('--profile-directory=Default')
options.add_argument("--incognito")
options.add_argument("--disable-plugins-discovery")
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors", "safebrowsing-disable-download-protection", "safebrowsing-disable-auto-update", "disable-client-side-phishing-detection"])
options.add_argument('--disable-extensions')
browser = webdriver.Chrome(chrome_options=options)

browser.delete_all_cookies()

browser.set_window_size(800,800)

browser.set_window_position(0,0)

我试图刮的网站使用DataDome的机器人安全,有线索吗?

deyfvvtc

deyfvvtc1#

为了避免像Datadome这样的反网页抓取服务,我们首先应该了解它们的工作原理,这实际上可以归结为3类检测:

  1. IP位址
  2. Javascript指纹
    1.请求详细信息
    像Datadome这样的服务使用这些工具来计算每个访问者的信任分数。低分数意味着你很可能是一个机器人,所以你要么被要求破解验证码,要么被完全拒绝访问。那么,我们如何获得高分数呢?

IP地址/代理

对于IP地址,我们希望通过代理来分配负载,IP地址有以下几种:

*数据中心:分配给Google Cloud、AWS等大公司的地址

这些都是可怕的为您的机器人评分,应该避免。

*住宅:分配给居住空间的地址。

这些都是伟大的为您的机器人得分。

*移动的:分配给手机基站的地址。

这些都是一样好的住宅,有时甚至更好。
因此,为了保持高信任分数,我们的scraper应该在一个住宅或移动的代理池中轮换。

Javascript指纹

  • 这个主题对于StackOverflow问题来说太大了,不过让我们做一个快速总结 *

网站可以使用Javascript对连接的客户端(scraper)进行指纹识别,因为Javascript会泄漏大量有关客户端的数据:操作系统、支持字体、可视渲染能力等。
例如:如果Datadome看到一堆Linux客户端通过1280 x720窗口连接,那么它可以简单地推断出这类设置很可能是bot,并给每个具有这些指纹详细信息的人低信任分数。
如果你使用Selenium来绕过Datadome,你需要修补这些漏洞来脱离低信任区。这可以通过修补浏览器本身来伪造指纹细节,如操作系统等。
有关这方面的更多信息,请参见我的博客How to Avoid Web Scraping Blocking: Javascript

请求详细信息

最后,即使我们有大量的IP地址,并修补了浏览器以防止泄漏关键指纹细节,如果我们的连接模式不寻常,Datadome仍然会给予我们低信任分数。
为了解决这个问题,我们的scraper应该以不明显的模式进行刮擦,它应该偶尔连接到非目标页面,比如网站的主页,这样看起来更像人类。
现在我们了解了scraper是如何被检测到的,我们可以开始研究如何绕过这个问题了。Selenium有一个很大的社区,这里要寻找的关键词是“stealth”。例如,selenium-stealth(及其分支)是修补Selenium指纹泄露的一个很好的起点。
不幸的是,这个抓取区域不是很透明,因为Datadome可以简单地收集已知的补丁并相应地调整它们的服务。这意味着你必须自己找出很多东西,或者使用web抓取API来为你抓取最初几个请求之后的受保护网站。
我已经尽我所能地把这个问题回答出来了,所以更多的信息请看我关于这个问题的系列博客文章How to Scrape Without Getting Blocked

nzkunb0c

nzkunb0c2#

它可能是由于无数的原因发生的。尝试通过答案here,给出了一些方法,在你可以防止这个问题。
一个简单的解决方案有时对我有用,就是在selenium中使用Waits/Sleep调用,请参阅文档中关于Waits的here

Import time
time.sleep(2)
sbdsn5lh

sbdsn5lh3#

验证码有什么问题吗?你可以用Anti Captcha或其他廉价的服务来解决它。下面是NodeJS的一个例子:https://github.com/MoterHaker/bypass-captcha-examples/blob/main/geo.captcha-delivery.com.js

dffbzjpn

dffbzjpn4#

关于您从不同网站或https://www.leboncoin.fr/抓取汽车数据的用例的更多细节将帮助我们构建更规范的答案。然而,我能够使用Selenium访问 Page Source,如下所示:

  • 代码块:
from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://www.leboncoin.fr/')
print(driver.page_source)
  • 控制台输出:
<html class="gServer"><head><link rel="preconnect" href="//fonts.googleapis.com" crossorigin=""><link rel="preload" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&amp;display=swap" crossorigin="" as="style"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&amp;display=swap" crossorigin=""><style data-emotion-css=""></style><meta charset="utf-8"><link rel="manifest" href="/manifest.json"><link type="application/opensearchdescription+xml" rel="search" href="/opensearch.xml"><meta name="theme-color" content="#ff6e14"><meta property="og:locale" content="fr_FR"><meta property="og:site_name" content="leboncoin"><meta name="twitter:site" content="leboncoin"><meta http-equiv="P3P" content="CP=&quot;This is not a P3P policy&quot;"><meta name="viewport" content="initial-scale=1.0, width=device-width, maximum-scale=1.0, user-scalable=0"><script type="text/javascript" async="" src="https://www.googleadservices.com/pagead/conversion_async.js"></script><script type="text/javascript" async="" src="https://tp.realytics.io/sync/se/cnktbDNiMG5jb3xyeV83NTFGRUQwMy1CMDdGLTRBQTgtOTAxRi1DNUREMDVGRjkxQTJ8?ct=1&amp;rt=1&amp;u=https%3A%2F%2Fwww.leboncoin.fr%2F&amp;r=&amp;ts=1591306049397"></script><script type="text/javascript" async="" src="https://www.googleadservices.com/pagead/conversion_async.js"></script><script type="text/javascript" async="" src="https://www.googleadservices.com/pagead/conversion_async.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=AW-766292687&amp;l=dataLayer&amp;cx=c"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=AW-667462656&amp;l=dataLayer&amp;cx=c"></script><script type="text/javascript" async="" src="https://cdn-eu.realytics.net/realytics-1.2.min.js"></script><script type="text/javascript" async="" src="https://i.realytics.io/tc.js?cb=1591306047755"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=DC-4167650&amp;l=dataLayer&amp;cx=c"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=AW-744431185&amp;l=dataLayer&amp;cx=c"></script><script type="text/javascript" async="" charset="utf-8" src="//www.googleadservices.com/pagead/conversion_async.js" id="utag_82"></script><script type="text/javascript" async="" charset="utf-8" src="//sdk.mpianalytics.com/pulse.min.js" id="utag_47"></script><script async="true" type="text/javascript" src="https://sslwidget.criteo.com/event?a=50103&amp;v=5.5.0&amp;p0=e%3Dexd%26site_type%3Dd&amp;p1=e%3Dvh&amp;p2=e%3Ddis&amp;adce=1&amp;tld=leboncoin.fr&amp;dtycbr=6569" data-owner="criteo-tag"></script><script type="text/javascript" src="//try.abtasty.com/09643a1c5bc909059579da8aac99e8f1.js"></script><script>window.dataLayer = window.dataLayer || [];
.
.
.
<iframe height="1" width="1" style="display:none" src="//4167650.fls.doubleclick.net/activityi;src=4167650;type=slbc01;cat=all-site;u1=homepage;ord=9979622847645.51?" id="utag_179_iframe"></iframe></body></html>

但是,从DOM Tree可以明显看出,网站通过DataDome受到了 Bad Bots 的保护,如下所示:

DataDome的第一次尝试

主要功能如下:

  • DataDome是唯一以服务形式提供的bot保护解决方案。
  • DataDome不需要架构更改或DNS重新路由。
  • DataDome的机器人检测引擎将网站的每个请求与海量内存模式数据库进行比较,并使用人工智能和机器学习的混合,在不到2毫秒的时间内决定是否应授予对您页面的访问权限。
  • DataDome检测并识别100%的OWASP自动化威胁。
  • DataDome的自定义规则功能甚至允许您阻止来自您不打算销售的国家/地区的人员流量,或仅在特定情况下允许合作伙伴机器人访问您的网站。

结尾
有关DataDoe的文档可在以下位置找到:

相关问题