关于scrpay爬取网页用selenium报Nignx Forbbiden的解决方案

关于scrpay爬取网页用selenium报Nignx Forbbiden的解决方案

最近爬取某网站,selenium模拟浏览器也爬不下来
网页相应正常,返回200,但是页面上的内容是Nignx Forbbiden,想了好多方案都没有解决

后来发现chromedriver里面有个window.navigator.webdriver,需要禁用掉
我们自然人用浏览器浏览网站
window.navigator.webdriver是undefined
在这里插入图片描述
用了selenium,window.navigator.webdriver会显示为true,导致被访问的服务器判定为是机器人,所以返回正常请求,但是页面内容不对。

chrome的源码位置
在这里插入图片描述

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值