使用 cookie 簡化登陸操作


  通過selenium庫請求拿到目標網站的cookie,然后用cookie去請求目標網站,可以省略登陸操作

以微博為例,先獲取登陸的cookie:

 1 import time
 2 import json
 3 from selenium import webdriver
 4 from selenium.webdriver.support.ui import WebDriverWait
 5 from selenium.webdriver.support import expected_conditions as ec
 6 from selenium.webdriver.common.by import By
 7 
 8 
 9 def save_cookie(the_cookie):  #  直接將獲取的cookie保存到json文件
10     with open('sina_cookie.txt', 'w') as f:
11         json.dump(the_cookie, f)
12 
13 
14 def save_cookies(the_cookies):  #  傳入的數據是 :將獲取到的cookie用字典保存它的 name 和 value
15     with open('sina_cookies.txt', 'w') as f:
16         f.write(json.dumps(the_cookies))
17 
18 
19 driver = webdriver.Chrome()
20 driver.get('https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')
21 driver.maximize_window()
22 
23 WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, '//*[@id="loginName"]')))
24 
25 try:
26     username = driver.find_element_by_xpath('//*[@id="loginName"]')
27     username.clear()
28     username.send_keys('用戶名')
29     time.sleep(1.3)
30     pwd = driver.find_element_by_xpath('//*[@id="loginPassword"]')
31     pwd.clear()
32     pwd.send_keys('密碼')
33     time.sleep(2)
34     driver.find_element_by_xpath('//*[@id="loginAction"]').click()
35     WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, '//p[@data-node="title"]')))
36     print(driver.find_element_by_xpath('//p[@data-node="title"]'))
37 
38     cookie = driver.get_cookies()
39     cookies = {}
40     for item in cookie:
41         cookies[item.get('name')] = item.get('value')
42     save_cookie(cookie)
43     print('cookie:\n', cookie)
44     save_cookies(cookies)
45     print('cookies:\n', cookies)
46 except Exception as e:
47     print(e)
48     pass
49 finally:
50     driver.close()

  使用requests請求時帶上cookie,可以直接登陸首頁而不需要設置登陸操作。這里可能出問題,可以采用:

在請求之前一定要先請求一下目標網站。

 1 import json
 2 import requests
 3 
 4 with open('sina_cookies.txt') as f:
 5     cookies = json.load(f)
 6     print(cookies)
 7 
 8 url = 'https://weibo.cn'
 9 result = requests.get(url, cookies=cookies)
10 print(result.text)
11 if '用戶名' in result.text:
12     print('cookie調試成功')

這里要注意的是我們drvier.get_cookies()獲取到的cookie信息是如下的形式:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM