首页 > 其他分享 >022.(附加)chromedriver编译-绕过selenium机器人检测

022.(附加)chromedriver编译-绕过selenium机器人检测

时间:2024-08-02 16:56:47浏览次数:21  
标签:adoQpoasnfa76pfcZLmcfl cdc chrome selenium chromedriver window 022

  • 有小伙伴说使用selenium没能绕过机器人检测,盘他。

一、selenium简介

  • Selenium 是一个强大的工具,用于Web浏览器自动化,更常被用于爬虫
  • 但selenium需要通过webdriver来驱动chrome,每次运行selenium时,都要先找到对应版本的chromedriver.exe。
  • chromedriver自动化会对浏览器的部分属性进行修改,非常容易被识别为机器人。
  • pypeeteer却没有这种烦恼,它不需要中间驱动,所以还是建议大家使用pyppeteer。但如果你已经写了上万行selenium代码了,那还是编译一个驱动吧。

二、机器人识别网站

  • 1.https://www.browserscan.net/bot-detection
    在这里插入图片描述
  • 1.https://www.browserscan.net/bot-detection

在这里插入图片描述

很明显,常规网站都能检测到selenium机器人。

三、检测原理

  • 将下面的js代码复制粘贴进F12控制台:
// 定义正则表达式
let regex = /^([a-z]){3}_.*_(Array|Promise|Symbol|JSON|Object|Proxy)$/;
// 获取window对象的所有属性名称
let allProps = Object.getOwnPropertyNames(window);
// 过滤出符合正则表达式的属性名称
let filteredProps = allProps.filter(prop => regex.test(prop));
// 输出匹配的属性名
console.log(filteredProps);
  • 正常浏览器会打印
[]
  • 被selenium控制的浏览器会打印
(6) ['cdc_adoQpoasnfa76pfcZLmcfl_Array', 'cdc_adoQpoasnfa76pfcZLmcfl_Object', 
'cdc_adoQpoasnfa76pfcZLmcfl_Promise', 'cdc_adoQpoasnfa76pfcZLmcfl_Proxy', 
'cdc_adoQpoasnfa76pfcZLmcfl_Symbol', 'cdc_adoQpoasnfa76pfcZLmcfl_JSON']

在这里插入图片描述

注意:这就是这2个站检测selenium机器人的核心逻辑。pypeeteer机器人已经不用担心,网站检测不到。

四、编译crhomedriver.exe

注意,这里依旧是全网独一份哈。

  • 打开chromium源码文件:\chrome\test\chromedriver\chrome\devtools_client_impl.cc
1.找到:
std::string script =
        "(function () {"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_Array = window.Array;"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_Object = window.Object;"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_Promise = window.Promise;"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_Proxy = window.Proxy;"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol = window.Symbol;"
        "window.cdc_adoQpoasnfa76pfcZLmcfl_JSON = window.JSON;"
        "}) ();";
    params.Set("source", script);
2.替换为:
std::string script =
        "(function () {"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_Array = window.Array;"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_Object = window.Object;"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_Promise = window.Promise;"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_Proxy = window.Proxy;"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol = window.Symbol;"
        //"window.cdc_adoQpoasnfa76pfcZLmcfl_JSON = window.JSON;"
        "}) ();";
    params.Set("source", script);
3.编译:
ninja  -C  out/Default chromedriver

注意:编译完后,会在out/Default目录下生成一个chromedriver.exe文件,这就是驱动。

五、验证

  • 将生成的chromedriver.exe拿过来,运行下面的python代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

# 指定chromedriver的路径
s = Service(r"chromedriver.exe")  # 请将这里替换为你的chromedriver路径

# 初始化Chrome选项
chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = r"C:\Users\Administrator\AppData\Local\Chromium\Application\chrome.exe"  # 请将这里替换为你的Chrome浏览器路径
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--fingerprints=11111111")

# 使用Service对象初始化driver
driver = webdriver.Chrome(service=s, options=chrome_options)
driver.delete_all_cookies()

# driver.get("https://www.browserscan.net/bot-detection")
driver.get("https://fingerprintjs.github.io/BotD/main/")
time.sleep(99999)

在这里插入图片描述

可以看到,依旧是自动化控制,官网却已经检测不到了。browserscan也一样。

六、成品

  • 我还是建议小伙伴们自己把流程全部跑一边,编译个自己的指纹浏览器和驱动。
  • 懒的小伙伴还是直接买成品。链接:[https://dwz.cn/KOweICeK]。之前买过的,联系我拿更新。(https://dwz.cn/KOweICeK)
  • 还有,再次感谢小伙伴们的建议和红包鼓励。

标签:adoQpoasnfa76pfcZLmcfl,cdc,chrome,selenium,chromedriver,window,022
From: https://blog.csdn.net/w1101662433/article/details/140869378

相关文章

  • Selenium + Python 自动化测试01(准备篇)
        本篇文章主要讲述Selenium+Python自动化测试-准备篇。主要时相关软件介绍,下载,安卓等。一、Selenium简介    1、Selenium是什么?        官网描述:        Primarily,itisforautomatingwebapplicationsfortestingpurposes,......
  • 2008-2022年 上市公司-异常审计费用(初始数据,计算代码,参考文献和最终数据)
    异常审计费用指的是实际审计费用与正常审计费用之间的偏差部分,这种偏差可能由多种不可观测因素引起,包括审计师的额外努力、审计师与被审计单位之间的特殊关系,或是被审计单位在市场中的优势地位等。研究异常审计费用与审计质量的关系,对于理解审计市场运作和提高审计透明度具有重......
  • 2000-2022年 上市公司-库存周转率、供应链效率明细数据
    国际化程度是衡量企业在全球市场竞争力和影响力的关键指标。它反映了企业在全球范围内的业务拓展和市场渗透能力。通过分析企业的海外分支机构数量、海外销售收入占比等,可以对企业的国际化程度进行量化评估。国际化程度指标国际化程度1通过海外收入占营业收入的比重来衡量企......
  • 2000-2022年 上市公司-各企业广告支出数据(原始数据、运行代码、最终结果(Excel 和 Dta
    广告支出是企业推广其商品或服务的关键财务活动之一。通过广告,企业能够提升品牌知名度、增强市场影响力,并最终推动销售增长。本数据资源提供了上市公司广告支出的详细数据,为企业市场策略分析和学术研究提供了丰富的信息。广告支出指标AD1:广告支出的自然对数AD1指标通过将......
  • 用selenium打开网页的最小模板
    前言环境:win10python3.10selenium4.12经常用selenium来实现一个打开网页的这样一个小功能,虽然代码很少,但每次重0开始写就很烦。所以这里记录下一个模板小模板importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.web......
  • 63.Selenium框架
    Selenium框架【一】浏览器操作1)页面操作1.初始化浏览器对象#使用环境变量fromseleniumimportwebdriverbrowser=webdriver.Chrome()browser=webdriver.Chrome(path)browser.close() #关闭浏览器#使用绝对路径fromselenium.webdriver.chrome.serviceimport......
  • 62.Xpath与Selenium
    【一】xpath1)介绍(XMLPathLanguage)一种小型的查询语言2)优点可在XML中查询支持HTML的查询通过元素和属性进行导航#安装pipinstalllxml#使用fromlxmlimportetree#将源码转化为能被XPath匹配的格式selector=etree.HTML(源码)#返回为一列表selector.xpat......
  • Python Selenium 单击 webdriverwait 与 find_element
    我无法理解这两个代码块之间的区别。发送点击在webdriverwait和find_elements中都有效。代码1fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.suppo......
  • Selenium“没有提供‘moz:firefoxOptions.binary’功能,并且在命令行上没有设置二进制
    我一直在尝试将python脚本移植到我的wsl/bash编码中心中。我继续收到此错误:Traceback(mostrecentcalllast):File"/path/to/my/file.py",line20,in<module>driver=webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))Fil......
  • 使用 Selenium 导出链接时出现 NoSuchDriverException 错误
    我想设置一个脚本来从输入URL后生成的网站导出链接。相关网站是pagespeed.web.dev。我的知识为零,所以虽然我知道这不是最好的选择,但我还是向ChatGPT寻求帮助。看起来只用1个URL就可以很好地完成所有事情,但一旦我尝试做5个URL,它就崩溃了。注意:据我了解,我不是数据抓取,......