一. 如何绕过页面登录

我们在登录网站的时候,通常需要输入用户名、密码和验证码,那么有没有办法绕过登录环节呢?

有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cookie,这篇文章主要总结一下前者

二. 如何实现加载用户配置(以博客园为例)

第一步:如果之前未登录过该网站,在手工登录的时候,要勾选下次自动登录

第二步:利用chrome://version查看User Data的路径

用户的配置信息都放在User Data目录下

第三步:构建python代码

这里值得注意的是:

1. --user-data-dir 要写正确(--user-data-dir或user-data-dir都是可以的),我看很多博文里都写成了–user-data-dir,经过测试,发现后者是无法加载用户配置的

2. get后的url为登陆后页面的url,这也契合我们的目的:即绕过登录页面,直接查看登陆后的页面

from selenium import webdriver
import time

option = webdriver.ChromeOptions()
option.add_argument("--user-data-dir=C:\\Users\\Beck\\AppData\\Local\\Google\\Chrome\\User Data")
driver = webdriver.Chrome(options=option)
driver.get("https://www.cnblogs.com")

第四步:python代码运行之前,请关闭已打开的chrome浏览器

否则,chromedriver会挂起,后面打开url的操作不会执行,这一点请参考《Selenium chromedriver hangs if I specify user-data-dir in Chrome options》:

"The only one client could be connected to a debugger in one time. So, to fix the issue, when we want to enter to a user profile using a debugger - to avoid chromedriver hangs trying to connect to the debugger, we must close an existing Chrome session"

看来这个和远程调试有关系,如果想用调试器来进入用户配置,为了避免chromedriver尝试连接调试器而导致的挂起,必须关闭已经存在的chrome会话

第五步:运行代码,观察结果

结果是符合预期的,因为看到的用户名,我的博客和退出选项

三. 加载用户配置并不是万能的

利用ChromeOptions()加载用户配置的前提是,我们要访问页面的url在浏览器的每次会话中都是相同的,如果同一页面每次会话的url变化,这意味着可能要改变一下策略了,以QQ邮箱为例,每次浏览器会话中首页的url都是不同的

一次会话:

另一次会话:

从上面两张图中,可以明显发现这个sid是变动的,sid又是什么呢?请参考《详解SID之终结篇》,里面有句话是:

"SID即安全标识符(System IDentifier),它用来标识用户身份的。当系统每次创建用户都会分配一个唯一的SID,每个帐户的SID都是不重复的"

这样即使运行python代码,看到的始终是QQ邮箱的登录页面

参考文章

https://blog.csdn.net/zwq912318834/article/details/78933910

https://www.cnblogs.com/baoyu7yi/p/7058537.html

https://stackoverflow.com/questions/41941573/selenium-chromedriver-hangs-if-i-specify-user-data-dir-in-chrome-options

利用ChromeOptions()加载用户配置的更多相关文章

  1. 【Selenium】Option加载用户配置,Chrom命令行参数

    about:version - 显示当前版本 about:memory - 显示本机浏览器内存使用状况 about:plugins - 显示已安装插件 about:histograms - 显示历史记 ...

  2. python+selenium通过加载用户配置实现免登陆

    1查看profile路径 在Chrome地址栏访问chrome://version,可以查看个人资料存储位置: 2 python代码如下: from selenium import webdriver ...

  3. 『心善渊』Selenium3.0基础 — 22、使用浏览器加载项配置实现用户免登陆

    目录 1.浏览器的加载项配置 2.加载Firefox配置 3.加载Chrome配置 1.浏览器的加载项配置 在很多情况下,我们在登录网站的时候,浏览器都会弹出一个是否保存登录账号的信息.如果我们选择保 ...

  4. selenium启动Chrome时,加载用户配置文件

    selenium启动Chrome时,加载用户配置文件   Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome ...

  5. 写个重新加载 ocelot 配置的接口

    写个重新加载 ocelot 配置的接口 Intro 我们想把 ocelot 的配置放在自己的存储中,放在 Redis 或者数据库中,当修改了 Ocelot 的配置之后希望即时生效,又不想在网关这边定时 ...

  6. 2.14 加载Firefox配置

    2.14 加载Firefox配置(略,已在2.1.8讲过,请查阅2.1.8节课) 回到顶部 2.14-1 加载Chrome配置 一.加载Chrome配置chrome加载配置方法,只需改下面一个地方,u ...

  7. 利用maven-assembly-plugin加载不同环境所需的配置文件及使用场景

    背景: 如何加载不同环境的配置文件已经成了势在必行的,我们通常利用profile进行,详情参见我上篇博客 http://www.cnblogs.com/lianshan/p/7347890.html, ...

  8. 自定义ClassLoader,用于加载用户JAR包

    最近在考虑C/S结构程序的软件自动升级的实现方式,比如QQ.飞信等都自动升级的功能. 自动升级模块虽然还没有编码完成,但是思路还是比较清晰的. 自动升级过程中,升级文件的JAR包是专门加载到程序中去的 ...

  9. SpringSecurity动态加载用户角色权限实现登录及鉴权

    很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得.因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结 ...

随机推荐

  1. Android之四大组件、六大布局、五大存储

    [-] Android六大界面布局方式 1 LinearLayout线性布局 LinearLayout的常用XML属性及相关方法 LinearLayout子元素支持的常用XML属性及方法 2 Tabl ...

  2. boost之实用工具

    1.noncopyable用于禁止复制和拷贝的类继承.声明拷贝和赋值函数为私有,将运行时的错误转化为编译期的错误. #include <iostream> #include <boo ...

  3. AJAX实现弹窗显示详情,全选和批量删除

    以Nation表为例,将Nation表显示在页面上,每一行数据前面加上复选框,后面加上查看详情,点击以弹窗形式显示每一行的数据,并且在表格最后一行加上全选复选框,点击选中全部数据,后面跟一个批量删除按 ...

  4. iOS 根据农历日期 获取当前的农历年份 即 干支纪年法算农历年

    前言:我国古代是用干支纪年的,近代史上提到的甲午战争.戊戌变法.辛亥革命等名词就是干支纪年.所谓干支就是十天干和十二地支的简称.天干.地支按照一定规则(单配单,双配双)可以搭配成60对,也就是一个甲子 ...

  5. iOS copy 和 mutableCopy 学习

    (参考 iOS 52个技巧学习心得笔记 第二章 对象 , 消息, 运行期)的对象部分 关于Copy  有个经典问题”大部分的时候NSString的属性都是copy,那copy与strong的情况下到底 ...

  6. SpringBoot Redis工具类封装

    1.接口类 package com.sze.redis.util; import java.util.List; import java.util.Set; import java.util.conc ...

  7. php大转盘抽奖

    抽奖大转盘演示:http://www.sucaihuo.com/php/3301.html function getRand($proArr, $proCount) { $result = ''; $ ...

  8. [转]GStreamer资料(摄像头采集,视频保存,远程监控)DVR

    http://blog.csdn.net/wzwxiaozheng/archive/2010/12/26/6099397.aspx GStreamer资料整理(包括摄像头采集,视频保存,远程监控,流媒 ...

  9. 跨平台移动开发_PhoneGap API 事件类型

    PhoneGap API Events backbuttondevicereadymenubuttonpauseresumeonlineofflinebatterycriticalbatterylow ...

  10. axios拦截器/http

    Interceptors //处理请求或响应之前拦截请求或响应. //添加一个请求拦截器 axios.interceptors.request.use(function (config) { //在请 ...