如何在不被拒绝许可的情况下通过无头 driver 访问站点
How to access a site via a headless driver without being denied permission
我正在尝试使用无头 chrome driver 检索站点的 html 代码。但是我收到 "permission denied" 消息。如果我使用 "regular" driver 一切正常。
有什么方法可以绕过它吗?
这是我的第一个 post 所以对于格式方面的任何潜在错误我深表歉意
from selenium import webdriver
#Headless driver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
driver1 = webdriver.Chrome(executable_path='./chromedriver', options=chrome_options,
service_args=['--verbose', '--log-path=/tmp/chromedriver.log'])
driver1.get('https://www.size.co.uk/')
html = driver1.page_source
html
我收到的消息是:
<html xmlns="http://www.w3.org/1999/xhtml"><head>\n<title>Access Denied</title>\n</head><body>\n<h1>Access Denied</h1>\n \nYou don\'t have permission to access "http://www.size.co.uk/" on this server.<p>\nReference #18.ac81655f.1548818550.73b12da\n\n\n</p></body></html>
常规 driver:
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.size.co.uk/')
html = driver.page_source
driver.quit()
html
理想情况下,我希望输出与后一种情况一样,而不会每隔几秒弹出新的 windows。
添加以下代码片段使我的页面变为 return:
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument('user-agent={0}'.format(user_agent))
该站点显然正在检查无头浏览器,然后拒绝它们访问。这是一篇关于避免检测的文章:Making Chrome Headless Undetectable
要获取驱动程序正在使用的用户代理,您可以运行以下命令:
driver.execute_script("return navigator.userAgent")
Chrome 无头用户代理是这样的:
u'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/71.0.3578.98 Safari/537.36'
你必须在代码
中更改user-agent
如果你发送了很多请求,你必须在每个请求中更改user-agent值
有很多Python和其他语言的库可以帮助你怎么做
请参阅下面的 link 了解如何使用它:
我正在尝试使用无头 chrome driver 检索站点的 html 代码。但是我收到 "permission denied" 消息。如果我使用 "regular" driver 一切正常。
有什么方法可以绕过它吗?
这是我的第一个 post 所以对于格式方面的任何潜在错误我深表歉意
from selenium import webdriver
#Headless driver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
driver1 = webdriver.Chrome(executable_path='./chromedriver', options=chrome_options,
service_args=['--verbose', '--log-path=/tmp/chromedriver.log'])
driver1.get('https://www.size.co.uk/')
html = driver1.page_source
html
我收到的消息是:
<html xmlns="http://www.w3.org/1999/xhtml"><head>\n<title>Access Denied</title>\n</head><body>\n<h1>Access Denied</h1>\n \nYou don\'t have permission to access "http://www.size.co.uk/" on this server.<p>\nReference #18.ac81655f.1548818550.73b12da\n\n\n</p></body></html>
常规 driver:
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.size.co.uk/')
html = driver.page_source
driver.quit()
html
理想情况下,我希望输出与后一种情况一样,而不会每隔几秒弹出新的 windows。
添加以下代码片段使我的页面变为 return:
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument('user-agent={0}'.format(user_agent))
该站点显然正在检查无头浏览器,然后拒绝它们访问。这是一篇关于避免检测的文章:Making Chrome Headless Undetectable
要获取驱动程序正在使用的用户代理,您可以运行以下命令:
driver.execute_script("return navigator.userAgent")
Chrome 无头用户代理是这样的:
u'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/71.0.3578.98 Safari/537.36'
你必须在代码
中更改user-agent如果你发送了很多请求,你必须在每个请求中更改user-agent值 有很多Python和其他语言的库可以帮助你怎么做 请参阅下面的 link 了解如何使用它: