selenium基础3-修改header、cookies等webdriver初始options

虽然ip可以使用代理,但是在爬取过程中,浏览器请求还是很容易被waf等工具识别出来,非常容易被墙,所以在使用selenium的时候,就在想,能不能在发送请求的时候像使用request一样,动态修改header。

先说结论,在查阅资料以后,证明selenium不支持动态修改header请求,有些博主也给出了一些说法。

github issue

stackoverflow question

大致是实现不了,也没见有人这么干的。但是也有灵活的地方, 我们可以在selenium启动webdriver之前,对header进行配置,也在一定程度上可以解决这个问题,另外我也贴出有些博主的解决方案。

https://blog.csdn.net/u013948858/article/details/92614346

解决思路主要如下:

  1. 使用另一个驱动程序/库而不是selenium(这个还要看编程所在领域给的库或包:python selenium-wire )
  2. 编写特定于浏览器的插件(或查找现有插件),允许您为请求添加标头。(现在好像是有插件:chrome和modify-headers firefox,但是对浏览器版本有要求)
  3. 使用browsermob-proxy或其他一些代理。(代理是个好主意)
  4. 可以通过使用fiddler等代理来完成。Fiddler还提供了FiddlerCore组件的仅API版本,以及对所有代理设置和数据的编程访问,从而允许您修改http响应的标头。(同第三代理很像,基本是一样的)

关于修改初始请求webdriver.option()相关文章如下:

https://www.zhihu.com/question/35547395?sort=created

https://www.cnblogs.com/TTyb/p/6128323.html

https://www.cnblogs.com/yangjintao/p/10599868.html

这篇文章比较详细:
https://blog.csdn.net/xc_zhou/article/details/82415870

部分代码块示例如下:

options = webdriver.ChromeOptions()

#设置浏览器header
options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')

#导入chromedriver路径
browser = webdriver.Chrome(executable_path = r'C:\xx\chromedriver.exe',chrome_options = options)

webdriver.ChromeOptions()还可以对cookies、是否加载图片、是否可视化运行等初始信息进行自定义设置。不止适用于chrome,这里只是以chrome举例。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值