使用 Headless 时的 HTTP 456 Chrome
HTTP 456 when using Headless Chrome
我正在尝试使用无头 chrome 导航到 https://my.waveapps.com,并收到 456 访问被拒绝。
我不知道为什么。
在正常模式下使用完全相同的铬二进制文件导航到相同的 url 工作正常。仅添加 --headless
选项会破坏它。
我正在使用 Chromium 66.0.3333.0
有两件事可以避免 Headless Chrome 被检测到:
- 更改用户代理
- 如果您通过
chromedriver
使用它,例如使用 Selenium,那么您还需要修补 chromedriver
可执行文件
更改用户代理
在无头模式下使用时,Chrome 更改其用户代理,将 Chrome
变为 HeadlessChrome
,因此任何想要拒绝无头浏览器的人都可以轻松检测到它。
因此请务必将用户代理更改为看起来像普通浏览器,例如:
chrome \
--disable-gpu \
--headless \
--remote-debugging-port=9222 \
--user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' \
'https://my.waveapps.com/login/'
正在修补 chromedriver
如 中所述,您尝试访问的网站使用 Distil Networks 检测无头浏览器,为避免被检测到,您需要从 chromedriver 可执行文件中删除任何 "cdc_" 字符串,通过 运行 以下命令:
perl -pi -e 's/cdc_/aaa_/g' /path/to/chromedriver
用您喜欢的任意三个字符组合替换 aaa
。
似乎对我有用:
我正在尝试使用无头 chrome 导航到 https://my.waveapps.com,并收到 456 访问被拒绝。
我不知道为什么。
在正常模式下使用完全相同的铬二进制文件导航到相同的 url 工作正常。仅添加 --headless
选项会破坏它。
我正在使用 Chromium 66.0.3333.0
有两件事可以避免 Headless Chrome 被检测到:
- 更改用户代理
- 如果您通过
chromedriver
使用它,例如使用 Selenium,那么您还需要修补chromedriver
可执行文件
更改用户代理
在无头模式下使用时,Chrome 更改其用户代理,将 Chrome
变为 HeadlessChrome
,因此任何想要拒绝无头浏览器的人都可以轻松检测到它。
因此请务必将用户代理更改为看起来像普通浏览器,例如:
chrome \
--disable-gpu \
--headless \
--remote-debugging-port=9222 \
--user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' \
'https://my.waveapps.com/login/'
正在修补 chromedriver
如
perl -pi -e 's/cdc_/aaa_/g' /path/to/chromedriver
用您喜欢的任意三个字符组合替换 aaa
。
似乎对我有用: