如果您正在寻找使网站无法检测到硒bot并与真正的访客没有区别的方法,那么您来对地方了。 在本文中,我将向您展示一些对我有用的方法和技巧。 如果还没有,请确保从piprogramming.org上阅读这篇文章,其中涵盖了10个技巧,以防止机器人检测。 尽管我今天要讲的内容有些相似,但本教程基于上述文章提供的基础知识。 此外,本文还专门针对ChromeDriver用户以及在Eclipse IDE上使用Java开发机器人的用户。 但是,您可以将所有这些概念应用于Firefox和IE。 让我们先介绍一下必须做的事情: #1清理您的导航器对象 导航器是一个JavaScript对象,其中包含有关您的浏览器的信息。 您只需检查一下元素->控制台,然后输入“console.log(导航器)” 默认情况下,通过Selenium启动ChromeDriver.exe时,它将向导航器中添加一个名为WebDriver的变量并将其设置为true。 这意味着任何网站都可以检查您的浏览器导航器是否具有webdriver标志。 无论webdriver设置为true还是false,如果变量存在,那么您必须是机器人。 这就是将webdriver.navigator属性设置为undefined的重要原因。 在这种情况下,如果网站查询navigator.webdriver,它将得到未定义的响应,这是您在任何普通浏览器中都将得到的响应,因为它首先没有webdriver标志。 我可以使用以下代码从浏览器中删除Webdriver: driver.executeScript(“ Object.defineProperty(navigator,’webdriver’,{get:()=> undefined})”); 驱动程序是ChromeDriver对象。 #2从chromedriver.exe删除跟踪器 ChromeDriver的开发人员似乎在exe文件中放置了一个“跟踪器”,作为Web服务器检测到它的一种后门。 罪魁祸首以唯一变量的形式出现,该变量设置为此确切的字符串:$ cdc_asdjflasutopfhvcZLmcfl_ 就我个人而言,我不确定这是否是故意的。 但是无论哪种方式,都必须用另一个相同大小的变量替换此变量。 最简单的方法是使用十六进制编辑器。 就我而言,我使用HxD并搜索var键和bingo! **请务必注意,此唯一字符串将来可能会更改 尽管此编辑目前将涵盖我们的基础,但这是您必须要做的最低限度的工作,以确保无法检测到您的漫游器。 我建议大家进行的另一项编辑是从chromedriver.exe中删除字符串“ WebDriver”的任何痕迹。 如果您使用十六进制编辑器搜索“ WebDriver”,您实际上会发现它已被多次使用! 称我为偏执狂,但永远不要太小心。 将WebDriver更改为具有相同长度的另一个单词,您距离完成检测不到一步。 如果您想真正地做到周全,那么浏览chromedriver.exe的600,000多个行以查看是否可以识别任何其他潜在的“跟踪器”并不是一个坏主意。 我不会说谎,我还没有这样做,但这绝对在我的TODO列表中。 #3自动获取代理并切换IP地址。 这是您的漫游器应该能够执行的另一个基本功能。 您应该能够自动获取代理并将其分配给chromedriver.exe。 此外,您还应该能够在代理之间自动切换。 有许多不同的方法可以实现这一目标。 对我来说,我使用了pubproxy.com并查询了它们的API。 然后解析响应,并将代理分配给chromedriver.exe。 这是代码: 字符串proxyAPICall =“ http://pubproxy.com/api/proxy?format=txt”; pubproxy在每个API调用上生成一个唯一的代理,这对于我的用例来说是完美的。 请记住,除非您订阅他们的高级会员,否则每天只能调用50个API。 #4有趣的部分 现在是有趣的部分,在这里您需要为浏览器创建一组“身份”。 这意味着不同的用户代理,浏览器窗口大小,屏幕分辨率等等。 本质上,您希望继续切换浏览器指纹,但同时也希望拥有可信的指纹。 成像您正在尝试人为地创建新的人类指纹。 您对图案进行了很大的更改,以至于在仔细检查时看起来并不像正常的人类指纹。 任何仔细查看此假指纹的人都可以立即分辨出它不是真实的人类。 只有在设计漫游器指纹时使用类似的方法才有意义。 要注意的是,不仅您必须设计出可信的浏览器指纹,而且还必须创建许多指纹来避免检测。 有很多不同的方法可以做到这一点,但是最起码的修改是:用户代理和浏览器窗口大小。 用户代理 对于用户代理,最好将通用用户代理用于浏览器。 您可以使用whatismybrowser.com查找按浏览器类型和版本排序的当今最常用的用户代理列表。 **请记住,您要匹配您的chromedriver.exe使用的Chrome版本,否则,如果您的用户代理版本与实际的浏览器版本不匹配,它将是一个巨大的危险信号。 浏览器窗口大小和屏幕分辨率 您还希望修改浏览器窗口的大小和屏幕分辨率。 毕竟,人们使用不同大小的浏览器。 最好设置自己使用的实际浏览器大小。 没有最好的魔术数字,您必须从模仿真实人类的角度考虑它。 您可以查看W3的“屏幕分辨率统计信息”,以了解一些常见的分辨率。 请务必注意,浏览器窗口大小与显示器上可用的屏幕分辨率之间存在差异。 这些是您必须注意的两个单独的值。 要更改浏览器窗口的大小,请使用以下代码: options.addArguments(“ window-size = 1920,1080”); 选项是ChromeOptions对象。 要更改屏幕分辨率,您无需与显示器实际混淆。 只需在javascript屏幕对象中修改变量,如下所示: 更改availWidth,可用高度,宽度和高度达到您想要的分辨率。 还要注意pixelDepth和colorDepth,因为您希望它们都与要设置的分辨率相匹配。 要更改这些变量,只需运行以下代码: driver.executeScript(“ Object.defineProperty(screen,’height’,{value:1080,configurable:true,writeable:true});”); 结论 如果您实现了本文中讨论的所有方法,则大多数Web服务器都不应检测到您的机器人。 请记住,这是最低限度,这意味着这些方法对于主动寻找Selenium机器人的服务器可能还不够。 这是一种猫猫老鼠的游戏,如果您想让自己的机器人不被发现,就必须继续玩。 如果您喜欢这篇文章,并且希望我给您更多有关如何使您的Selenium bot不被发现的想法,请考虑在Twitter上分享它并为我加标签@needforbeans 如果足够多的人对此表示兴趣,那么我有很多关于可以使您的机器人不被发现的方法的想法,我可以与您分享! —- 原文链接:https://themerkle.com/selenium-java-how-to-avoid-bot-detection-by-websites-when-using-chromedriver-exe/ 原文作者:Mark 编译者/作者:wanbizu AI 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Selenium Java –使用chromedriver.exe时如何避免网站检测到僵尸程序– The Merkle News
2020-12-16 wanbizu AI 来源:区块链网络
LOADING...
相关阅读:
- 24小时内以太坊创建17.7万个地址以太坊地址创下了单日最高峰值2020-12-15
- 随着空投炒作的消退,XRP可能很快成为“表现最差的主要代币”2020-12-15
- 12/13ETH晚间多单策略精准抓住6个点位2020-12-13
- 像Google这样的流行浏览器无法捕获模仿者的加密站点,骗局取得了最佳2020-12-13
- [Bitfinex] 通过API管理您的Bitfinex Pulse2020-12-13