关于scrpay爬取网页用selenium报Nignx Forbbiden的解决方案
最近爬取某网站,selenium模拟浏览器也爬不下来
网页相应正常,返回200,但是页面上的内容是Nignx Forbbiden,想了好多方案都没有解决
后来发现chromedriver里面有个window.navigator.webdriver,需要禁用掉
我们自然人用浏览器浏览网站
window.navigator.webdriver是undefined
用了selenium,window.navigator.webdriver会显示为true,导致被访问的服务器判定为是机器人,所以返回正常请求,但是页面内容不对。
class SeleniumMiddleware(object):
def process_request(self, request, spider):
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
# 禁用window.navigator.webdriver
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
# 或者直接禁用整个blink-features
# chrome_options.add_argument('--disable-blink-features')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(request.url)
html = driver.page_source
driver.quit()
return scrapy.http.HtmlResponse(url=request.url, body=html, encoding="utf-8", request=request)