python+selenium 通過新增cookies或token解決網頁上驗證碼登入問題

aiee發表於2018-07-27

cookie或token可以儲存登入資訊,當我們拿到cookie後,可以通過向瀏覽器傳送cookie中記錄的資料,直接變成登入狀態,不需要再登入。

 

下面舉個栗子

1、先把正常的登入方式碼一下:

browser = webdriver.Chrome(executable_path='chromedriver.exe')

browser.get("https://******")

#登入
browser.find_element_by_id("username").send_keys("***")
browser.find_element_by_id("password").send_keys("***")
browser.find_element_by_id("logInBtn").click()

這是沒有驗證碼的登入,如果有驗證碼,需要加一句獲取和輸入驗證碼,我本意是要告訴你如何獲取cookie,這裡有沒有驗證碼無所謂。

 

2、下面是獲取cookie

  1. #獲取cookie

  2. cookies=browser.get_cookies()

  3. print(cookies)

列印出來的就是cookie的內容,你也可以直接從瀏覽器裡面登入後獲取cookie。

 

3、拿到cookie後接下來就可以向瀏覽器傳送cookie了

#新增cookie

#browser.add_cookie({'name': '...', 'value': '...'})

c1={'domain': '.qunadai.com', 'expiry': 1548387538, 'httpOnly': False, 'name': 'UM_distinctid', 'path': '/', 'secure': False, 'value': '164d9d16fa6299-0b0c0d8568386d-2d604637-3d10d-164d9d16fa7a72'}
c2={'domain': 'wap-sit.qunadai.com', 'expiry': 1548387549, 'httpOnly': False, 'name': 'CNZZDATA1271582478', 'path': '/', 'secure': False, 'value': '941553296-1532663028-%7C1532663028'}
browser.add_cookie(c1)
browser.add_cookie(c2)

新增cookie使用方法browser.add_cookie(),注意cookie格式是key-value的格式。

 

4、token登入

有的網頁不用cookies,有自己的token,沒關係,繼續試試token

#獲取token
token=browser.execute_script('window.localStorage.getItem("token")')
print(token)
#新增token
js='window.localStorage.setItem("token","token值")
browser.execute_script(js)

browser.refresh()#重新整理
 

 

相關文章