Selenium Selenium+python 通过 Cookie 和 Token 登录详解 [无基础新手必看系列]

刘小样 · 2020年11月05日 · 最后由 卢本伟Cow_B 回复于 2020年11月06日 · 5448 次阅读

功能描述:通过 Cookie 或 Token 登录
用 处:自动化时跳过验证码
适用环境:Windows

通过 Cookie 登录示例开始

options = webdriver.ChromeOptions()
options.binary_location = r"D:\Program Files\Google\Chrome\Application\chrome.exe"
driver = webdriver.Chrome(options=options)
driver.implicitly_wait(30)
driver.get("http://172.16.4.117:18909/main")
driver.maximize_window()
driver.delete_all_cookies()
driver.add_cookie({'name': 'OPERATE_WEB_SID', 'value': '00946d84-4ebc-49d5-8d66-24b8a3766a08'})
driver.add_cookie({'name': 'rememberMe',
                   'value': 'LFs5N3OlWkkD0n0Hdz+G8IGBlCHrSg9+uY70VybINunL3dhtZ6bGALmu/h179BXNdOivfrCOW2ncrQad5Fbz+RaF+ZyZlR32YpmhyjmsltgeT5XGcEU5GY4Ul9+JkqIfeRUgUpgr4H0RyaIy05YdSvkHeuzij5zzduUPhUM3JJ2y4zOYvp8rbU2UEgyrP/+/alJUqD+cVyOds+G20biP+6rq5c9021qCDzbeKpxNR0rv5Rx4uou1Q3MgJfebqZ1c/hZ5+nMwE6rEza/PREEKwNqzttGmneJuhCTcljddz+HK+VUX24n+Cy7t7PwGBC14Y0MBd7MYc1Fnehbd2wklkfN67z5a//Mlbnu25kf3w1zLeuk/TR2HCVc4o2lSZV3l37YzBOvOaKx/wPK25Z4edIGmJyXqF9mrgLOkL7O8NmYY9PP8jzp9elSke/SsAZ2kZZxFJgtmqlzpyC7L6+OUIzZ5a1FeYMSOfD/g1PyfpBt9giM5mE2aClOiETbJV05aqbN4cFUGDiL7Ben30QOaA6JTMqSuL0sSHv5/xi/WEZl5efb7D4xd2f2XV/lnvGekXc4hblsv8JSOWK0SZDK6UkbXpO0uvDIAntPcljlUic6jXHXI/swwTwJ31Eyj0Gd6Q9t7txAkZfZ3AEFw5KNPouxbXvSudpto/tvenVU3FSHkUVKHhlMeYF5b0Rdhoxl9E4FS4hWl64w0EtTgShTFdGZ0B/mQLE6lPqKbvPdDPuY8t+wgWxV9WAua5ixhEq+5xVH36jadUMqMbXqLNlM6YHCBik+4gJd+75paLJB2eQpMiMYmtzmaMgNCEqlXWVhw/3Mxl8v6iNK8RbN47PyFV8mOBZ/rz/uv2OBK4gvS8aMlTL3dsU7CFf4ohcwI/9c78z2IFIThX6Tv01flIcfkjJozCJM6hz83bMMM3gjqMW0jnqcc3m55u1gHBxqyRf2wqFOLOF7GU4nYIaak7rYh9iPh60z89aPxE8mz8S8PN/q4lPfe/sgP+arICnML9djuYc0r3Am0PdwRsnlKgQw/B4RUBmklumSVhTEkyb1U3INqcgvp7rr/eoN8LTvS3nXFiWFAuLDcHg4UsIFG/eXwi+7SkHhKJPwU44A23IYxU75shrnbhNxvv5Zg8iIP9P2dcegv6ELFYcrBtowkGFMW80VeJxppOh/RR1Jvfr7jG80sR38LfFZK1dAAUYI8/CQz3IaAI1gjnxVR9yWG5so96lkAeLBqU2kWJWKZKV3xbS11siP0RyL8+EDzCGQyRA8BnId7Z7Bl8SwBH7C0pViuxkznwUGSYmAG/NL/cwQV1K3G7IsD9kpyPb+sgbd7NJbKoxgmg0CPXRYTcjxBxrA1REs1ULyb0AbS54jVVFFf1y9Xopo6u6QDUE/AypWrE9339wTMsFj3XOikJ8IXFD8yqA=='})

driver.get("http://172.16.4.117:18909/main")

webdriver 操作 Cookie 的方法介绍:
1:get_cookies() 获得所有 cookie 信息
2:get_cookie(name) 返回特定 name 有 cookie 信息
3:add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
4:delete_cookie(name) 删除特定 (部分) 的 cookie 信息
5:delete_all_cookies() 删除所有 cookie 信息

如何获取手动 Cookie 介绍
使用 Chrome 浏览器用无痕模式打开,手动输入 URL、手动输入账号、密码、验证码点击登录成功登录后。按下 F12 进入调试界面如下图。

然后把对应的 name、value 通过 add_cookie 方法添加到浏览器,最后重新 driver.get 一次 URL 即可。

网上也有说最后直接使用 driver.refresh() 刷新一下页面就可以了,但是我这边使用刷新方法进不去,因为目标网址是http://172.16.4.117:18909/main
但是没有登录状态网址直接进入到了http://172.16.4.117:18909/login页面,如果进入到了登录首页不管你怎么刷新都无法登录的,所以木有办法只能重新请求一次目标地址!

通过 token 登录示例开始

browser = webdriver.Chrome()
browser.implicitly_wait(15)
browser.get("你自己的URL地址我这边就不方便贴测试地址了,就是那个https://********这个东西")
js = 'window.localStorage.setItem("business_sys_token","36f5a344e43045dda2334e8103b05ee7")'
browser.execute_script(js)
new_Tab = 'window.open("你自己的URL地址我这边就不方便贴测试地址了,就是那个https://********这个东西")'
browser.execute_script(new_Tab)
browser.maximize_window()
handles = browser.window_handles     #打印当前所有句柄通俗的就是窗口
browser.switch_to.window(handles[0])  #切换到第一个窗口
browser.close()                                      #关闭第一个窗口
browser.switch_to.window(handles[1])  #切换到第二个窗口

如何获取手动 Token 介绍
使用 Chrome 浏览器用无痕模式打开,手动输入 URL、手动输入账号、密码、验证码点击登录成功登录后。按下 F12 进入调试界面如下图。

然后把 Token 值使用 window.localStorage.setItem 存入到浏览器中。使用 Token 登录时用到了 window_handles,因为我存入 Token 后重新使用 browser.get 登录系统时发现登录不了,我也不知道为什么登录不了,因为我是新手呀。然后我就使用 windows.open 重新打开了一个窗口在新窗口去登录,这个时候就出现了二个窗口,为了美观我就需要把第一个窗口关闭掉所以就用到了多窗口的切换和关闭窗口。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

支持一下 ~!

刘小样 关闭了讨论 03月13日 13:01
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册