我正在尝试使用无头的chrome驱动程序检索网站的html代码。但是,我收到“权限被拒绝”消息。如果我使用“常规”驱动程序,则一切正常。
有什么办法可以绕过它?
这是我的第一篇文章,因此对格式中的任何潜在错误我深表歉意
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 = webdriver.Chrome('./chromedriver') driver.get('https://www.size.co.uk/') html = driver.page_source driver.quit() html
理想情况下,我希望输出与后一种情况相同,而不会每隔几秒钟弹出一次新窗口。
添加以下代码片段即可返回该页面:
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))
该网站显然正在检查无头浏览器,然后拒绝它们访问。这是有关避免检测的文章:使Chrome Headless无法检测
要获取驱动程序正在使用的用户代理,可以运行以下命令:
driver.execute_script("return navigator.userAgent")
Chrome无头用户代理如下所示:
u’Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,例如Gecko)HeadlessChrome / 71.0.3578.98 Safari / 537.36’