人类都知道selenium可以通过option.add_argument()函数 来添加启动配置从而实现UA的定义,但是如果我们想实现每次请求随机一个UA那么这种办法就不合适了!因为启动配置是在driver启动前配置的,总不能每次访问1个页面重新启动1次driver吧。
而且,有些同学还想自定义完整的请求头(header)信息,selenium又该如何去实现这个需求呢?诸位看官莫急,鄙人千辛万苦终于找到了一种实现每次请求可以随机UA或者请求头的方法(只需配置1次driver,然后每次访问页面可以自定义headers)。
鉴于这个方法目前知道的人比较少,在网上基本也看不到类似信息,暂时还不想放在网上被各种复制粘贴(网上无脑复制粘贴的过程中有可能还出错),具体的使用可以加文章底部的微信来了解。
上述方法可以实现每次请求一个url前自定义headers或者只定义user_agent或者cookie等信息。
经过使用,反复测试,发现了一些注意事项:
1、假设一开始自定义请求头(UA为ua1,Cookie为cookie1),去请求url1。然后不重新定义而是再请求url2或者刷新(driver.refresh)url1,那么这第2次请求ua1依然是ua1,但是cookie1会丢失。
2、假设自定义请求头(UA为ua1,Cookie为cookie1)后,去请求url1,然后点击了url1页面的1个搜索按钮,发送了ajax请求而导致url1页面内容和浏览器地址栏url变化(浏览器仍处于当前标签页),那么此次ajax请求ua1和cookie1不会丢失。
3、自定义请求头,以UA为例,实现的效果是发送http请求UA是变化的,但是浏览器本身的navigator.userAgent不会变化(有些检测UA的网站是后端取http请求头信息,有些是前端是取的navigator.userAgen,两者未必总是一致)。