selenium获取cookies并持久化登陆

需求背景:

​ 这几天需要写一个接口,用来批量上传数据,最开始考虑的是 UI 自动化,然后选值的时候自动化难以判别,最终选择 接口 自动化。

​ 然后操蛋的找了两天没找着该环境的登录接口,只能选择最笨的办法,selenium 模拟登陆,获取到cookie然后为 requests 所用。

我的思路是这样,听起来好像没啥难点,但还是卡了大晚上。

​ 主要遇到的问题是,我 selenium 模拟登陆是正常的,但到了requests cookie就是不对,左检查右检查,终于找到,犯了一个致命的错误:

​ 那我正常登陆后跳转到的是 index 页面,我从这里取cookies,那我取到的是 index 的cookies,虽然理论上他是一样的,但我也想不明白为啥就是不对

​ 最后的解决方案也很简单,在selenium 中在进行一次跳转,跳转到目标页面,然后再获取 cookies进行持久化操作,很幸运出来了。

逻辑代码大概如下:


options = webdriver.ChromeOptions()
# 忽略SSL验证
options.add_argument('--ignore-certificate-errors') # 忽略证书错误
options.add_argument('headless') # 隐藏窗口
#options.add_argument("--disable-gpu") # 规避BUG
driver = webdriver.Chrome(chrome_options=options)
# driver.implicitly_wait(30)
driver.get(u'https://tfssc.ynby.cn/CAS_Server/login?service=https://tfssc.ynby.cn/portal-web/login/casSuccess##')
driver.delete_all_cookies()
driver.find_element_by_id('username').send_keys('user')
driver.find_element_by_id('password').send_keys('pwd')
driver.find_element_by_name('submit').click()
driver.get('https:xxxxx')# 获取请求头
agent = driver.execute_script("return navigator.userAgent")
# 创建一个requests.session对象
session = requests.Session()
print(agent,type(agent))
# 获取登录cookies
saveCookies = driver.get_cookies()
c = saveCookies[0]['value']
print(saveCookies)
# 将cookies设置到session中
for cookie in saveCookies:
session.cookies.set(cookie['name'],cookie['value'])
print(session.cookies.values())
# cookies_value = saveCookies['name']
# 目标地址
url = "https:xxxxx"
driver.quit()
payload={'bizCategoryId': '12874',
'orgIds': ''} headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'User-Agent': agent ,
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
#'Cookie': 'JSESSIONID='+c,
'Host': 'tfssc.ynby.cn'
}
print(headers)
response = session.request('POST', url, headers=headers, data=payload)

​ 又过了一坑。

鬼刀镇楼

selenium获取cookies并持久化登陆的更多相关文章

  1. 用selenium获取cookies

    前言:由于登录反爬措施的越来越麻烦,甚至出现了12306这种看图识物的无敌验证码,我只能说,我选择死亡.这就衍生出了使用selenium来获取获取cookies. 实例:获取qq空间cookies,亲 ...

  2. selenium获取百度账户cookies

    [效果图] 效果图最后即为获取到的cookies,百度账户的cookies首次获取,需要手动登录,之后就可以注入cookies,实现免密登录. [代码] public class baiduCooki ...

  3. 微博验证码的识别并登录获取cookies

    记得以前微博是用的宫格验证码,现在不一样了,用的是滑块验证码和 点触验证码,每天登陆的第一次基本用的是滑块,继续登录就都用的是点触验证码.所以滑块验证码不写,感兴趣的可以补上. 代码: 这里用的超级鹰 ...

  4. Selenium 管理 Cookies

    使用 Selenium ,还可以方便地对 Cookies 进行操作,例如获取.添加 .删除 Cookies 等 from selenium import webdriver browser = web ...

  5. selenium操作cookies实现免密登录,自动发微博

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...

  6. C# HttpWebRequest获取COOKIES

    C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...

  7. selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)

    网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...

  8. selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功

    selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...

  9. Python网络爬虫笔记(四):使用selenium获取动态加载的内容

    (一)  说明 上一篇只能下载一页的数据,第2.3.4....100页的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有页的href属性值. 使用selenium去模拟浏览器有点 ...

随机推荐

  1. Java面向对象~类和对象&方法,类方法

    面向对象 概念:     1.同一类事物的抽象描述,不是具体的    2.类和对象的关系:        类 是抽象的.        对象 是具体的.    3.对象的体征,称为"属性&q ...

  2. JS自动播放音频 无效chrome设置 (Uncaught (in promise) DOMException: play() failed because the user didn't interact)

    Chrome的autoplay政策在2018年4月做了更改.新的行为:浏览器为了提高用户体验,减少数据消耗,现在都在遵循autoplay政策,Chrome的autoplay 政策非常简单 muted ...

  3. C# Dispose模式

    需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:不 ...

  4. JAVA使用IDEA本地调试服务的代码

    然后将启动参数的 jdwp=transport=dt_socket,server=y,suspend=n,address=8086 放到服务器上 在执行jar包的命令加入这个 例如 java -jar ...

  5. CMAKE为项目输出名添加后缀

    概述 本文将介绍cmake配置动态库和可执行程序两种,使用cmake为其添加Debug和Release配置下的后缀 动态库 下面将介绍使用CMAKE_DEBUG_POSTFIX和CMAKE_RELEA ...

  6. Qt5获取可用串口

    概述 本文将介绍Qt5使用类QSerialPortInfo获取可以用串口号 效果 机器上配置的虚拟串口 程序获取结果 源码开始 .pro文件中添加下面的代码 QT += serialport 然后,执 ...

  7. 【LeetCode】157. Read N Characters Given Read4 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 直接调用 日期 题目地址:https://leetco ...

  8. 【九度OJ】题目1433:FatMouse 解题报告

    [九度OJ]题目1433:FatMouse 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1433 题目描述: FatMouse pr ...

  9. 【授课录屏】JavaScript高级(IIFE、js中的作用域、闭包、回调函数和递归等)、MySQL入门(单表查询和多表联查)、React(hooks、json-server等) 【可以收藏】

    一.JavaScript授课视频(适合有JS基础的) 1.IIFE 2.js中的作用域 3.闭包 4.表达式形式函数 5.回调函数和递归 资源地址:链接:https://pan.baidu.com/s ...

  10. bugku的一道XFF转发代理服务器题 “本地服务器”

    X-Forwarded-For requests包内构造方式: X-Forwarded-For: client1, proxy1, proxy2