selenium获取cookies并持久化登陆
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并持久化登陆的更多相关文章
- 用selenium获取cookies
前言:由于登录反爬措施的越来越麻烦,甚至出现了12306这种看图识物的无敌验证码,我只能说,我选择死亡.这就衍生出了使用selenium来获取获取cookies. 实例:获取qq空间cookies,亲 ...
- selenium获取百度账户cookies
[效果图] 效果图最后即为获取到的cookies,百度账户的cookies首次获取,需要手动登录,之后就可以注入cookies,实现免密登录. [代码] public class baiduCooki ...
- 微博验证码的识别并登录获取cookies
记得以前微博是用的宫格验证码,现在不一样了,用的是滑块验证码和 点触验证码,每天登陆的第一次基本用的是滑块,继续登录就都用的是点触验证码.所以滑块验证码不写,感兴趣的可以补上. 代码: 这里用的超级鹰 ...
- Selenium 管理 Cookies
使用 Selenium ,还可以方便地对 Cookies 进行操作,例如获取.添加 .删除 Cookies 等 from selenium import webdriver browser = web ...
- selenium操作cookies实现免密登录,自动发微博
一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...
- C# HttpWebRequest获取COOKIES
C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...
- selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...
- selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功
selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...
- Python网络爬虫笔记(四):使用selenium获取动态加载的内容
(一) 说明 上一篇只能下载一页的数据,第2.3.4....100页的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有页的href属性值. 使用selenium去模拟浏览器有点 ...
随机推荐
- Python3 第五周大纲(模块,导入方法、import本质,导入优化,模块的分类)
1.定义: 模块:逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能,本质是.py结尾的文件) 2.导入方法 import module_name,module_name2,...... ...
- AcWing822. 走方格
题目 给定一个\(n×m\)的方格阵,沿着方格的边线走,从左上角\((0,0)\)开始,每次只能往右或者往下走一个单位距离,问走到右下角\((n,m)\)一共有多少种不同的走法. 输入格式 共一行,包 ...
- JAVA使用多线程进行数据处理
import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.Log ...
- 【LeetCode】594. Longest Harmonious Subsequence 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计次数 日期 题目地址:https://leetc ...
- 1742 开心的小Q
如果一个数字存在一个约数是完全平方数,那么小Q就认为这个数是有趣的. 小Q喜欢收集有趣的数字,每找到一个有趣的数,小Q就会变得很开心. 小Q发现12是有趣的,18也是有趣的,它们都是36的约数,而在3 ...
- [数学]高数部分-Part IV 一元函数积分学
Part IV 一元函数积分学 回到总目录 Part IV 一元函数积分学 不定积分定义 定积分定义 不定积分与定积分的几何意义 牛顿-莱布尼兹公式 / N-L 公式 基本积分公式 点火公式(华里士公 ...
- 【jvm】05-为什么你写的代码有时候和预期不一致
[jvm]05-为什么你写的代码有时候和预期不一致 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请 ...
- 「影院售票系统」 · Java Swing + MySQL JDBC开发
目录 文档说明: 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 实现代码: 一.数据库: 二.Java Swing: com.ynavc.Bea ...
- 【】JSON语法RFC4627
Network Working Group D. Crockford Request for Comments: 4627 JSON.org Category: Informational July ...
- Ranger-Sqoop2插件安装
Ranger-Sqoop2插件安装,基于Ranger版本1.0.0,支持Sqoop2版本1.99.7. 1.获取安装包 scp root@10.43.159.11:/home/compile/rang ...