【selenium】绕过selenium检测及模拟手机浏览器

1、Chrome 版本小于88
web = Chrome()
# 在启动浏览器之前添加这段js代码即可
web.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocumemt",{
       "source": """
                  navigator.webdriver = undefined
                      Object.defineProperty(navigator,'webdriver',{
                          get:() ==> undefined
                              })
                  """
                  })
web.post(url,data,headers)
2、Chrome版本大于等于88
option = Options()
# 某些网站监控到时selenium就不会返回任何信息,加上词句就可以正常运行了
option.add_argument('--disable-blink-features=AutomationControlled')
web = Chrome(options=option)
web.get(url)
3、其他的浏览器操作

# 一般会在浏览器设置无头模式
option = Options()
option.add_argument('--headless')
web = Chrome(optinos=option)

# 浏览器打开开发者模式
option.add_argument("--auto-open-devtools-for-tabs")

# 现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为 undefined。而使用selenium访问则该值为true。那么如何解决这个问题呢?

#只需要设置Chromedriver的启动参数即可解决问题。在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation']
option.add_experimental_option('excludeSwitches', ['enable-automation'])

# 设置模拟手机浏览器,方法一:
mobile_emulation = {'deviceName': 'iPhone X'}
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
# 设置模拟手机浏览器,方法二:
WIDTH = 320
HEIGHT = 640
PIXEL_RATIO = 3.0
UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0 MQQBrowser/8.8.2 Mobile/14B72c Safari/602.1 MttCustomUA/2 QBWebViewType/1 WKType/1'

mobileEmulation = {"deviceMetrics": {"width": WIDTH, "height": HEIGHT, "pixelRatio": PIXEL_RATIO}, "userAgent": UA}
options = webdriver.ChromeOptions()
options.add_experimental_option('mobileEmulation', mobileEmulation)

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值