1. # 无须密码验证方法
  2.  
  3. chromeOptions = webdriver.ChromeOptions()
  4. chromeOptions.add_argument('--proxy-server=http://ip:port')
  5. driver = webdriver.Chrome(chrome_options=chromeOptions)

 

密码验证(动态与隧道代理)

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from __future__ import print_function
  4.  
  5. from selenium import webdriver
  6. from selenium.webdriver.chrome.options import Options
  7.  
  8. def create_proxyauth_extension(proxy_host, proxy_port,
  9. proxy_username, proxy_password,
  10. scheme='http', plugin_path=None):
  11. """Proxy Auth Extension
  12.  
  13. args:
  14. proxy_host (str): domain or ip address, ie proxy.domain.com
  15. proxy_port (int): port
  16. proxy_username (str): auth username
  17. proxy_password (str): auth password
  18. kwargs:
  19. scheme (str): proxy scheme, default http
  20. plugin_path (str): absolute path of the extension
  21.  
  22. return str -> plugin_path
  23. """
  24. import string
  25. import zipfile
  26.  
  27. if plugin_path is None:
  28. plugin_path = '/tmp/vimm_chrome_proxyauth_plugin.zip'
  29.  
  30. manifest_json = """
  31. {
  32. "version": "1.0.0",
  33. "manifest_version": 2,
  34. "name": "Chrome Proxy",
  35. "permissions": [
  36. "proxy",
  37. "tabs",
  38. "unlimitedStorage",
  39. "storage",
  40. "<all_urls>",
  41. "webRequest",
  42. "webRequestBlocking"
  43. ],
  44. "background": {
  45. "scripts": ["background.js"]
  46. },
  47. "minimum_chrome_version":"22.0.0"
  48. }
  49. """
  50.  
  51. background_js = string.Template(
  52. """
  53. var config = {
  54. mode: "fixed_servers",
  55. rules: {
  56. singleProxy: {
  57. scheme: "${scheme}",
  58. host: "${host}",
  59. port: parseInt(${port})
  60. },
  61. bypassList: ["foobar.com"]
  62. }
  63. };
  64.  
  65. chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
  66.  
  67. function callbackFn(details) {
  68. return {
  69. authCredentials: {
  70. username: "${username}",
  71. password: "${password}"
  72. }
  73. };
  74. }
  75.  
  76. chrome.webRequest.onAuthRequired.addListener(
  77. callbackFn,
  78. {urls: ["<all_urls>"]},
  79. ['blocking']
  80. );
  81. """
  82. ).substitute(
  83. host=proxy_host,
  84. port=proxy_port,
  85. username=proxy_username,
  86. password=proxy_password,
  87. scheme=scheme,
  88. )
  89. with zipfile.ZipFile(plugin_path, 'w') as zp:
  90. zp.writestr("manifest.json", manifest_json)
  91. zp.writestr("background.js", background_js)
  92.  
  93. return plugin_path
  94.  
  95. proxyauth_plugin_path = create_proxyauth_extension(
  96. proxy_host="transfer.mogumiao.com",
  97. proxy_port=9001,
  98. proxy_username="username", # 输入隧道账号
  99. proxy_password="passwod" # 输入密码
  100. )
  101.  
  102. co = Options()
  103. co.add_argument("--start-maximized")
  104. co.add_extension(proxyauth_plugin_path)
  105.  
  106. driver = webdriver.Chrome(chrome_options=co)
  107. driver.get("https://www.baidu.com/")

  

selenium 添加动态隧道代理的更多相关文章

  1. 关于selenium添加使用代理ip

    最近在爬某个网站,发现这个网站的反爬太厉害了,正常时候的访问有时候都会给你弹出来验证,验证你是不是蜘蛛,而且requests发的请求携带了请求头信息,cookie信息,代理ip,也能识别是爬虫,他应该 ...

  2. python3 selenium模块Chrome设置代理ip的实现

    python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...

  3. selenium+chromdriver 动态网页的爬虫

    # 获取加载更多的数据有 2 种方法# 第一种就是直接找数据接口, 点击'加载更多' 在Network看下, 直接找到数据接口 # 第二种方法就是使用selenium+chromdriver # se ...

  4. ssh命令:隧道代理+本地端口转发+远程端口转发

        0.前言 nc是一个在网络连接两端的好工具,同时也是也个临时的端口转发的好工具.(永久的端口转发用什么?用iptables) ssh也是这方面的好工具,好处是加密可靠可复用在一端操作即可,代价 ...

  5. Java设计模式---(动态)代理模式

    代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问. 动态代理使用 java动态代理机制以巧妙的方式实现了代理模式的设计理念. 之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白 ...

  6. 突破IP限制动态替换代理ip。

    须要导入的两个jar包 实现的javabean <span style="font-size:18px;">package com.jx.po; public clas ...

  7. MFC如何在树形图边上添加动态小地图

    MFC如何在树形图边上添加动态小地图 https://www.jianshu.com/p/7b1d828bf5db (简书无法识别缩进的...早知道先在博客园发了) (转载请注明出处) 作者:梦镜谷雨 ...

  8. springboot+shiro+redis(单机redis版)整合教程-续(添加动态角色权限控制)

    相关教程: 1. springboot+shiro整合教程 2. springboot+shiro+redis(单机redis版)整合教程 3. springboot+shiro+redis(集群re ...

  9. QT中添加 动态库(.so) 和 静态库 (.a) 的方法

    在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...

随机推荐

  1. abp框架下,donet core配置swagger

    abp已经自带了swagger,但是我们的文档注释swagger并没有做处理,需要我们自己手动处理一下 1.对Application层配置xml输出,一般勾上xml,默认的地址就可以啦! 2.修改St ...

  2. @RequestMapping、@ResponseBody和@RequestBody的使用

    使用SSM框架进行Web开发时,经常在Controller中遇到@RequestMapping.@ResponseBody和@RequestMapping注解. 1.@RequsetMapping注解 ...

  3. Vue-cli里面引用stylus遇到的问题总结

    1.stylus的调用 在vue-cli中用到stylus样式处理器的时候一定要引用两个对应的报stylus  stylus-loader 命令:cnpm install stylus stylus- ...

  4. HTTP Status 500 - Error instantiating servlet class cn.it.bd.S011

    HTTP Status 500 - Error instantiating servlet class cn.it.bd.S011 出现此报错的很大可能是因为 <servlet-class> ...

  5. 最新版本汉化-PowerDesigner 16.6 汉化并河蟹

    更新日志: 2019-03-14 V1.1 1.支持反复多次汉化: 2.修复少许bug. 最新的16.6版本已经在汉化中了,基本上所有的菜单均已汉化完成,部分窗体还没有编译通过. 不过,不影响尝鲜使用 ...

  6. java中的i++与++i的区别以及除法、模的用法(基础)

    java中i++与++i的区别: 例如:int i=3; (先运算再赋值)j=++i; i的值先变成4,再赋给j,j的值为4: (先赋值再运算)j=i++; 先将i的值3赋给j,j的值为3,然后i变成 ...

  7. 博三F5第二次站立会议(2019-03-21)

    时间:2019-03-21(第五周) 地点:博三414寝室 时长:一个半小时 到勤:全员到勤 谈论内容: 大致确定本周计划与下周打算 本周计划: 杨澳:做出整个游戏软件开发过程的大致时间规划,做出需求 ...

  8. SQLServer 2008R2主从部署实战

    说明: 由于临时接到做OA的主从环境,基于Windows 200R2 SQLServer2008 R2,由于搜索的资料都不完整,好多重要之处有遗漏,亲自动手做了好几次,填完了坑,整理以备忘记与分享,如 ...

  9. xPath 用法总结整理

    xPath 用法总结整理   一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML ...

  10. 多个DispatcherServlet有什么用处.md

    有看到一些应用在 web.xml 文件中配置了多个 DispatcherServlet,例如: <servlet>    <servlet-name>en</servle ...