selenium 参数设置

selenium启动chrome基本上与真实环境类似,但有一些变量还是不一样,需要注意。

有些网站通过这些参数识别爬虫。

window.navigator.webdriver

值为undefined是正常的浏览器,返回true说明用的是Selenium模拟浏览器。

这里给出一个检测Selenium的js代码例子

webdriver = window.navigator.webdriver;

if(webdriver){    console.log('Selenium模拟浏览器')

} else {    console.log('正常浏览器')}

解决办法:

第一种:使用mitmproxy用中间人的方式截取服务器发送来的js,修改js里面函数的参值方式发送给服务器。相当于在browser和server之间做一层中介的拦截。不过此方法要对js非常熟悉。

第二种:通过selenium,设置Chromedriver的启动参数。

在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation'],完整代码如下:

from selenium.webdriver import Chrome

from selenium.webdriver import ChromeOptions

option = ChromeOptions()

option.add_experimental_option('excludeSwitches', ['enable-automation'])

driver = Chrome(options=option)

此时启动的Chrome窗口,在右上角会弹出一个提示,不用管它,不要点击停用按钮。

再次查询window.navigator.webdriver,可以发现这个值已经自动变成undefined。并且无论打开新网页,开启新窗口还是点击链接进入其他页面,都不会让它变成true。

selenium 参数设置-window.navigator.webdriver的更多相关文章

  1. 防止网站检测出Selenium的window.navigator.webdriver属性

    只需在Chromeoptions对象中添加一个属性即可解决 import time from selenium.webdriver import Chrome, ChromeOptions optio ...

  2. Selenium启动项参数设置

    再Selenium中使用不同的Webdriver可能会有不一样的方法,有些相同的操作会得到不同的结果, 本文主要介绍的是Chrome()的使用方法. 其他的Webdriver可以参考官方文档 Chro ...

  3. window.open参数设置及如何全屏显示(转)

    先来个列子: window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no ...

  4. Python+Selenium自动化-设置等待三种等待方法

    Python+Selenium自动化-设置等待三种等待方法   如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现 ...

  5. 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题

    目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统.然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多 ...

  6. javascript宿主对象之window.navigator

    window.navigator用来反映浏览器及其功能信息的对象. // 检测浏览器版本信息 function getBrowserInfo(){ var Sys = {}; var ua = win ...

  7. Tomcat性能参数设置

    Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...

  8. 解决window.navigator.geolocation.getCurrentPosition在IOS10系统中无法进行地理定位问题

    昨天接到用户通知说在点击"看场地"时无法获取地理位置信息. 在接到通知时,首先想到的是排查机型问题.由于客户多为IOS用户,所以最先看的是在安卓是有没有此问题的发生,调查结果为安卓 ...

  9. tomcat端口修改以及jvm启动参数设置

    1.端口更改:找到config目录下server.xml文件 如下 <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to t ...

随机推荐

  1. [lua]紫猫lua教程-命令宝典-L1-01-05. if判断结构

    L1[if]01. 简单的if判断结构 没什么说得 if得基本结构如下 xxx= ) then testlib.traceprint("1-100") ) then testlib ...

  2. JQuery选择器(转载)

    原文:https://blog.csdn.net/colorapp/article/details/44279645 一. jQuery选择器是什么1. CSS选择器要是某个样式应用于特定的HTML元 ...

  3. 其他 - win10 paged pool 内存溢出

    1. 概述 win 10 内存时不时溢出 目前还没有跟踪完毕 有空继续跟踪 2. 问题 win10 内存动不动就 往上涨 只涨不降 看各个进程又是正常的 3. 思路 先看看内存情况 妈的我 jvm 的 ...

  4. 实体间的关系:1:1,1:N,M:N

    *实体之间的关系* 1)1对1关系: 两个实体表内,存在相同的主键字段. 1.1)设计: 如果记录的主键值等于另一个关系表内记录的主键值,则两条 记录对应,1:1对应. 例子: #表一:学生信息表 # ...

  5. JVM(三、双亲委派机制)

    javadoc的解释: ClassLoader的每一个实例都会有一个与之关联的父ClassLoader,当被要求去寻找一个类或者资源的时候,ClassLoader的实例就会对于类或者是资源的寻找委托给 ...

  6. DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL 未能在“xmlhttpRequest”上执行“open”:无效的URL。

    出现这个报错主要是baseurl:http://192.168.*.*/后面的(/)或是请求里面的url:/user/login中前面的(/)有一个漏掉了,导致合成的路径不完整,所以报错:无效的URL

  7. 发现一个比较好玩的,git的仓库可以转换

    我们通过 git clone 下载一个仓库到本地, 1.这个本地的文件夹名字可以随便改. 2.如果你把本地仓库的全部文件,剪切到另一个文件夹内,这个新的文件夹就是git的本地仓库.

  8. JEECG开发第一个菜单显示设备列表

    一.新建设备表(t_base_device) ; -- ---------------------------- -- Table structure for t_base_device -- --- ...

  9. docker删除mysql镜像失败Error response from daemon: conflict: unable to delete 8809d5286227 (must be forced) - image is being used by stopped container 1a2a427273b3

    错误解析:这是由于要删除的目标镜像中有容器存在,故无法删除镜像 解决办法:先删除镜像中的容器,再删除该镜像.

  10. mysql 查询结果保存为表

    mysql> create table stunow select distinct 学号,姓名,密码 from stu12to15 ;