mot*_*yyy 4 java macos selenium selenium-chromedriver apple-silicon
我遇到了一个问题,在我将 Chromedriver 修改为不被网站检测为机器人后,它会在启动时立即死亡。
\n为了访问我的银行网站上的数据,我构建了一个使用 Selenium 和 Chromedriver 的基于 java 的工具。我的银行正在使用一些机器人检测软件,因此如果您只运行常规的 chromedriver,您就会被检测到,并且会抛出一般错误。在我的旧 Intel Mac 上,为了解决这个问题,我只需运行此命令,一切都会正常工作:
\nperl -pi -e \'s/cdc_/dog_/g\' `which chromedriver`\n
Run Code Online (Sandbox Code Playgroud)\n当我在 Apple Silicon Mac 上运行此程序时,chromedriver 在启动时立即被终止
\n\xe2\x95\xad\xe2\x94\x80 motopascyyy@mbp2022 \xe2\x9e\x9c ~\n\xe2\x9e\x9c perl -pi -e \'s/cdc_/dog_/g\' `which chromedriver`\n\xe2\x95\xad\xe2\x94\x80 motopascyyy@mbp2022 \xe2\x9e\x9c ~\n\xe2\x9e\x9c chromedriver\n[1] 16612 killed chromedriver\n
Run Code Online (Sandbox Code Playgroud)\n如果我用以下命令恢复命令perl -pi -e \'s/dog_/cdc_/g\' /path/to/chromedriver
,它将再次开始运行。
\xe2\x95\xad\xe2\x94\x80 motopascyyy@mbp2022 \xe2\x9e\x9c ~\n137 x perl -pi -e \'s/dog_/cdc_/g\' `which chromedriver`\n\xe2\x95\xad\xe2\x94\x80 motopascyyy@mbp2022 \xe2\x9e\x9c ~\n\xe2\x9e\x9c chromedriver\nStarting ChromeDriver 101.0.4951.41 (93c720db8323b3ec10d056025ab95c23a31997c9-refs/branch-heads/4951@{#904}) on port 9515\nOnly local connections are allowed.\nPlease see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.\nChromeDriver was started successfully.\n
Run Code Online (Sandbox Code Playgroud)\n根据对几个不同线程的建议,我已将 perl 命令更改为查找$cdc_
而不是$dog_
,虽然 chromedriver 仍将启动,但机器人检测逻辑将无法工作。
我对修改前后的 chromedriver 进行了比较,没有发现重大差异(Intel 和 Appel Silicon 看起来都一样)
\n63464c63464\n< var key = \'$cdc_asdjflasutopfhvcZLmcfl_\';\n---\n> var key = \'$dog_asdjflasutopfhvcZLmcfl_\';\n63504c63504\n< const Symbol = window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol || window.Symbol;\n---\n> const Symbol = window.dog_adoQpoasnfa76pfcZLmcfl_Symbol || window.Symbol;\n63531c63531\n< const Array = window.cdc_adoQpoasnfa76pfcZLmcfl_Array || window.Array;\n---\n> const Array = window.dog_adoQpoasnfa76pfcZLmcfl_Array || window.Array;\n63688c63688\n< const Promise = window.cdc_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n---\n> const Promise = window.dog_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n63757c63757\n< const Promise = window.cdc_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n---\n> const Promise = window.dog_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n63829c63829\n< const Promise = window.cdc_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n---\n> const Promise = window.dog_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise;\n
Run Code Online (Sandbox Code Playgroud)\n还有其他人遇到过类似的问题吗?
\n编辑2022-05-09
\n我查看了控制台,似乎运行 perl 命令对包的修改足以使代码签名无效。根据控制台,该进程被杀死的原因是:
\nException Type: EXC_BAD_ACCESS (SIGKILL (Code Signature Invalid))\n
Run Code Online (Sandbox Code Playgroud)\n目前还不清楚为什么这在英特尔机器上不是问题。
\n做了一些谷歌搜索,可以删除旧签名并强制使用“临时”签名。之后,chromedriver 即可供个人使用。
perl -pi -e 's/cdc_/dog_/g' /path/to/chromedriver
codesign --remove-signature /path/to/chromedriver
codesign --force --deep -s - /path/to/chromedriver
Run Code Online (Sandbox Code Playgroud)
这会修改可执行文件、删除签名并添加新签名。以下是我收集这些命令的链接:
https://electiclight.co/2020/11/03/code-signatures-3-fixing-signature-problems/ https://www.purebasic.fr/english/viewtopic.php?t=78137
今天我刚买的M1也遇到了同样的问题,一直在兜圈子。我买了那台M1 Powerbook来开发爬行工作,所以我非常沮丧。感谢您让我了解 M1 代码签名要求。
归档时间: |
|
查看次数: |
1134 次 |
最近记录: |