Selenium+python 透過 Cookie 和 Token 登入詳解 [無基礎新手必看系列]

刘小样發表於2020-11-05

功能描述:通過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")

通過Cookie登入示例結束

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登入示例結束

如何獲取手動Token介紹
使用Chrome瀏覽器用無痕模式開啟,手動輸入URL、手動輸入賬號、密碼、驗證碼點選登入成功登入後。按下F12進入除錯介面如下圖。

然後把Token值使用window.localStorage.setItem存入到瀏覽器中。使用Token登入時用到了window_handles,因為我存入Token後重新使用browser.get登入系統時發現登入不了,我也不知道為什麼登入不了,因為我是新手呀。然後我就使用windows.open重新開啟了一個視窗在新視窗去登入,這個時候就出現了二個視窗,為了美觀我就需要把第一個視窗關閉掉所以就用到了多視窗的切換和關閉視窗。

相關文章