selenium绕过验证码-利用cookies登录

  |   0 评论   |   0 浏览

今天醒来太早,洗漱收拾到公司8点半不到(公司9点半上班),干点什么呢,想到前几天朋友问我关于selenium元素定位的问题,来定位登录,想到这儿,我就想能不能像http请求那样利用cookies获取登录状态,这样就不用再进行登录了。说试就试。本篇文章就拿本网站17mark.com为例。

webdriver提供的关于cookie的相关方法

1get_cookies()                    获得cookie信息
2add_cookie(cookie_dict)           添加cookie
3delete_cookie(name)               删除特定的cookie
4delete_all_cookies()              删除所有的cookie

实例

首先我已经登录了http://www.17mark.com 我刷新一下页面拿一下cookie信息。
image.png
image.png
可以看到request过去的cookies信息。

我们把cookies信息写一下,注意add_cookie(cookie_dict)方法接收的是一个字典。我们要写name和value。可以看一下。
image.png
运行以上代码出现错误。
image.png

unable to set cookie:
此问题是因为在driver在向浏览器添加cookie时,还未打开任何一个页面。
所以先打开页面后再添加cookie。 然后看我最终代码。

最终源码

 1
 2driver = webdriver.Chrome()
 3#先打开一个页面。
 4driver.get('http://www.17mark.com')
 5#打开页面后再添加cookie。不然会报错。代码中的cookie信息已做删减。
 6driver.add_cookie({
 7    'name':'Hm_lvt_75c167c3d6bbdb54701bd69229764b15',
 8    'value':'1569208126,1569243807',
 9})
10driver.add_cookie({
11    'name':'Hm_lpvt_75c167c3d6bbdb54701bd69229764b15',
12    'value':'1570842949',
13})
14driver.add_cookie({
15    'name':'visited',
16    'value':'%22%2Farticles%2F2019%2F09%2F24%2F1569325593532.html%22%5D',
17})
18driver.add_cookie({
19    'name':'skin',
20    'value':'nijigen',
21})
22driver.add_cookie({
23    'name':'solo',
24    'value':'34c7dae04126a90de56dded8f09c4ea7bc751032e6e101a5ac693d',
25})
26#添加cookies后再重新请求一次网站。
27driver.get('http://www.17mark.com')
28#此时已经为登录状态。
29#再打印一下此次访问服务器返回的最新cookies。
30print(driver.get_cookies())
31

注意

  • 网站cookie好多都是动态的,每访问一次,更换一次。可以自行用get_cookies()方法获取最新cookies做参数化。
  • cookie大多有过期时间,注意脚本运行时更新新cookie以免过期。
  • 不是所有网站都把登录状态信息放在cookie中,有些网站关闭浏览器就会清除cookie,请自行判断,大部分是可以的。

转载请注明出处,如有错误,请帮忙指正,谢谢!
标题:selenium绕过验证码-利用cookies登录
作者:走在人生的路上z
地址:http://17mark.com/articles/2019/10/12/1570874628057.html
此处应有打赏走在人生的路上z
走在人生的路上z