我正在住宅代理网络后面的Ubuntu服务器上运行Chrome驱动程序。然而,我的硒被检测到了。有没有办法让Chrome驱动程序和硒100%检测不到?
我尝试了这么久,忘记了我做过的许多事情,包括:
我正在寻找一个真正版本的硒,是100%无法检测。如果真的存在的话。或者另一种无法被机器人跟踪器检测的自动化方式。
这是浏览器启动的一部分:
sx = random.randint(1000, 1500)
sn = random.randint(3000, 4500)
display = Display(visible=0, size=(sx,sn))
display.start()
randagent = random.randint(0,len(useragents_desktop)-1)
uag = useragents_desktop[randagent]
#this is to prevent ip leaking
preferences =
"webrtc.ip_handling_policy" : "disable_non_proxied_udp",
"webrtc.multiple_routes_enabled": False,
"webrtc.nonproxied_udp_enabled" : False
chrome_options.add_experimental_option("prefs", preferences)
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-impl-side-painting")
chrome_options.add_argument("--disable-setuid-sandbox")
chrome_options.add_argument("--disable-seccomp-filter-sandbox")
chrome_options.add_argument("--disable-breakpad")
chrome_options.add_argument("--disable-client-side-phishing-detection")
chrome_options.add_argument("--disable-cast")
chrome_options.add_argument("--disable-cast-streaming-hw-encoding")
chrome_options.add_argument("--disable-cloud-import")
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--disable-session-crashed-bubble")
chrome_options.add_argument("--disable-ipv6")
chrome_options.add_argument("--allow-http-screen-capture")
chrome_options.add_argument("--start-maximized")
wsize = "--window-size=" + str(sx-10) + ',' + str(sn-10)
chrome_options.add_argument(str(wsize) )
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("blink-settings=imagesEnabled=true")
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("user-agent="+uag)
chrome_options.add_extension(pluginfile)#this is for the residential proxy
driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver", chrome_options=chrome_options)发布于 2019-06-10 15:49:57
Selenium驱动的WebDriver被检测到的事实并不取决于任何特定的selenium、Chrome或ChromeDriver版本。网站本身可以检测网络流量,并能识别浏览器客户端,即由WebDriver控制的浏览器。
然而,在web抓取过程中避免被检测到的一些通用方法如下:
time.sleep(secs)。在这里您可以找到关于如何在python中睡眠for驱动程序毫秒的详细讨论。@Antoine在他的博客网站无铬检测中提到了几种区分Chrome浏览器和无头 Chrome浏览器的方法。
如果(/HeadlessChrome/.test(window.navigator.userAgent)) {
- A check for the presence of _Chrome headless_ can be done through:{console.log(“检测到无铬头”);}
navigator.plugins返回浏览器中的插件数组。通常,在Chrome上我们可以找到默认插件,比如Chrome PDF viewer或Google Native Client。相反,在无头模式下,返回的数组包含没有的插件。- A check for the presence of _Plugins_ can be done through:if(navigator.plugins.length == 0) {console.log(“可能是铬无头”);}
user: navigator.language和navigator.languages.使用的语言第一种是浏览器UI的语言,第二种是表示用户首选语言的字符串数组。但是,在无头模式下,navigator.languages返回一个空字符串。- A check for the presence of _Languages_ can be done through:if(navigator.languages == "") {console.log(“检测到无铬头”);}
Google SwiftShader和Google Inc.。在无头模式下,我们可以获得Mesa OffScreen (一种不用任何窗口系统的渲染技术)和Brian Paul (启动开源Mesa图形库的程序)。gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);var画布=document.createElement(‘
- A check for the presence of _WebGL_ can be done through:’);var gl = canvas.getContext('webgl');var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');var供应商=document.createElement var呈现器= gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);if(供应商== "Brian“& renderer == "Mesa”){console.log(“无铬检测到”);}
-并非所有的Chrome无头浏览器对供应商和渲染者都有相同的价值。其他人保留的值也可以在非无头版本中找到。但是,Mesa Offscreen和Brian Paul表示存在无头版本。
hidpi/retina hairlines的支持的发际线功能。- A check for the presence of _hairline feature_ can be done through:if(!现代化的“发际线”){console.log(“可能是铬无头”);}
- A check for the presence of _Missing image_ can be done through:var body = document.getElementsByTagName("body");var image = document.createElement("img");image.src =“http://iloveponeydotcom32188.jg"”;image.setAttribute("id“、"fakeimage");body.appendChild(图像);image.onerror = function(){ if(image.width == 0& image.height == 0) {console.log(”无铬头检测“);}}
参考文献
您可以在以下几个方面找到一些类似的讨论:
tl;dr
发布于 2021-05-04 09:45:34
为什么不试试未检出-显色剂呢?
优化的SeleniumChromeDriver修补程序不会触发反bot服务,比如提取网络/ Imperva / DataDome / Botprotect.io,它会自动下载驱动程序二进制文件并对其进行修补。
经过测试,直到当前的chrome测试版也能在勇敢浏览器和许多其他基于铬的浏览器上工作
您可以用:pip install undetected-chromedriver安装它。
--您应该注意一些重要的事情:,由于模块的内部工作,需要以编程方式浏览(即:使用.get(url) )。千万不要用gui导航。使用您的keybord和鼠标进行导航会导致可能的检测!新塔布斯:同样的故事。如果您确实需要多个选项卡,那么打开带有空白页的选项卡(提示: url是data:,包括逗号,是的,驱动程序接受它),并照常做您的事情。如果您遵循这些“规则”(实际上是它的默认行为),那么现在您将有一个很好的时间。
In [1]: import undetected_chromedriver as uc
In [2]: driver = uc.Chrome()
In [3]: driver.execute_script('return navigator.webdriver')
Out[3]: True # Detectable
In [4]: driver.get('https://distilnetworks.com') # starts magic
In [4]: driver.execute_script('return navigator.webdriver')
In [5]: None # Undetectable!发布于 2022-08-22 11:36:02
如果您确切地知道您要面对的检测和指纹工具类型-(通过boty等),您可以为您的目标网站创建一个无法检测的Selenium WebDriver。这并不能保证它能在其他地方发挥作用。本文提供了附加的规避工具和Web抓取API - https://levelup.gitconnected.com/web-scraping-and-the-art-of-war-5-tools-that-will-help-your-bot-win-c2a3840d8b71。
https://stackoverflow.com/questions/56528631
复制相似问题