参考连接: http://www.cnblogs.com/fnng/p/6431484.html-虫师的博客
现在进行到添加coockie,目前未添加成功,接下来要了解下cookie的原理。目前怀疑 BAIDUID和BDUSS是否就是分别对应的用户名和密码的key
py文件内容:
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("https://baidu.com/")
cookie = driver.get_cookies()
print(cookie)
#添加cookie
driver.add_cookie({'name':'BAIDUID','value':'username'})
driver.add_cookie({'name':'BDUSS','value':'password'})
#再次访问,将会自动登录
driver.get("https://baidu.com/")
后面发现,执行完,并没有进入登录状态,这是哪里的问题?
执行py文件,打印出的cookie是:
[{'secure': False, 'httpOnly': False, 'value': 'DC29E8589D5DA9F7F54BxxxxxxxDAB6:FG=1', 'name': 'BAIDUID', 'expiry': 3651405136, 'domain': '.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': 'DC29E8589xxxxx85FBD269DAB6', 'name': 'BIDUPSID', 'expiry': 3651405136, 'domain': '.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': '1503921490', 'name': 'PSTM', 'expiry': 3651405136, 'domain': '.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': '0', 'name': 'BD_HOME', 'expiry': None, 'domain': 'www.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': '1467_21089', 'name': 'H_PS_PSSID', 'expiry': None, 'domain': '.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': '13314352', 'name': 'BD_UPN', 'expiry': 1504785490, 'domain': 'www.baidu.com', 'path': '/'}, {'secure': False, 'httpOnly': False, 'value': 'B490B5EBF6F3CD402E5xxxxxxDA1598', 'name': 'BDORZ', 'expiry': 1504007892, 'domain': '.baidu.com', 'path': '/'}]
这里面是打印的原cookie,当前cookie里面并没有用户名和密码的key。所以后面是添加key,并且添加值。如上添加失败。。。
上面的网址改为:http://www.itdiffer.com/course/41
登录前后的cookie为:
未登录:
[{'domain': 'www.itdiffer.com', 'name': 'PHPSESSID', 'value': 'ir54b1gs1ajooismgeis1me9g4', 'path': '/', 'secure': False, 'httpOnly': False, 'expiry': None}]
denglu:
[{'value': 'svlof40ejdq604xxxx7qd6e20', 'expiry': None, 'path': '/', 'name': 'PHPSESSID', 'domain': 'www.itdiffer.com', 'secure': False, 'httpOnly': False}, {'value': 'VG9weGlhXFNlcxxxxxdXJyZW50VXNlcjpPVEV6TmpFek5ERTNRSEZ4TG1OdmJRPT06MTUzNTQ2MzgxNzowOTI2ZDY2NxxxxxxNGFiNTc3YTcwZmU0ODFhYzQxMzI4NWQ0MzA5N2Q2Y2Y5MzEwNTg2YTRhOWM2', 'expiry': 1535463815, 'path': '/', 'name': 'REMEMBERME', 'domain': 'www.itdiffer.com', 'secure': False, 'httpOnly': True}]
哪个多了???
首先说个小问题,怎么得到cookie,是否安装fiddler工具才能看到,不是:
1 2 3然后,重点来啦:
之前的一个理解误区。我之前一直以为添加cookie跳过验证码,意思就是将登录用户的用户名和密码加到cookie中,按照这个思路,就是在cookie中添加两个键值对:用户名-值,密码-值。
之前还去整理了下cookie的工作原理,愣是没弄明白,现在才知道,因为一个登录用户对应一个id--比如BAIDUID,这个是唯一的。那么添加后,服务器识别后看到还是这个id那么就确认已经登录了。
具体步骤
这两个值,是在cookie中选择的,这个对应每个登录用户都是不同的。登录成功后,找到对应的值,复制过来。运行就发现自己的浏览器是登录状态了,而,我们根本没有输入用户名和密码,当然验证码更是跳过了。 是不是很棒。呵呵
---
后面遇到想通过添加cookie跳过输入用户名密码验证码,发现竟然没成功,于是再回来重新补课。补课链接http://www.itest.info/videos/26,从32:33开始即可。
重新刷了一遍,发现可以用fiddler看cookie。
目前可以1,在浏览器查看cookie,2,在fiddler中看cookie,3,F12查看cookie
后面再试,发现仍然不能进入登录状态,问开发,得到答案:因为有后台拦截器,所以不允许直接访问后台。如果要用需要将拦截器给注掉。
网友评论