實現selenium+python3+cookie免密登錄CSDN


分兩步來做:

第一步:登錄CSDN並獲取cookies,並保存到json文件或者excel文件中,本文使用excel文件保存cookie數據。

第二步:讀取excel文件中的cookie數據,添加cookie信息。

 

import os
import time
import xlwt,xlrd
from selenium import webdriver


current_path=os.path.dirname(__file__)
webdriver_path=os.path.join(current_path,'../webdriver/chromedriver.exe')
driver=webdriver.Chrome(executable_path=webdriver_path)
driver.implicitly_wait(10)

# (1)手動登錄CSDN獲取cookie。
driver.get('https://www.csdn.net/')
driver.maximize_window()
time.sleep(30)#等待這段時間手動輸入用戶名、密碼驗證碼登錄系統
cookies=driver.get_cookies()#獲取登錄過程中的cookie信息
print(cookies)
# 把cookies的key寫入excel文件中第一行
workbook=xlwt.Workbook(encoding='utf-8')
worksheet=workbook.add_sheet('Sheet1')
worksheet.write(0,0,'domain')
worksheet.write(0,1,'httpOnly')
worksheet.write(0,2,'name')
worksheet.write(0,3,'path')
worksheet.write(0,4,'secure')
worksheet.write(0,5,'value')
# 使用for循環把cookie的value值寫入接下來的每一行中
for row_num in range(1,len(cookies)+1):#第0行是key值,所以從第一行開始寫入value值
    worksheet.write(row_num,0,cookies[row_num-1]['domain'])
    worksheet.write(row_num,1,cookies[row_num-1]['httpOnly'])
    worksheet.write(row_num,2,cookies[row_num-1]['name'])
    worksheet.write(row_num,3,cookies[row_num-1]['path'])
    worksheet.write(row_num,4,cookies[row_num-1]['secure'])
    worksheet.write(row_num,5,cookies[row_num-1]['value'])
workbook.save('CSND_Cookie.xls') #保存cookie文件

 

我們按照步驟一步步來做,第一步:打開CSDN系統,點擊登錄/注冊按鈕,跳轉到登錄頁面,有很多種登錄方式,我這里使用微信掃碼登錄獲取cookies(因為使用賬號、密碼登錄時需要安全驗證,且手動處理失敗,沒找到解決的辦法。),登錄后獲取到的cookie存到excel文件中。代碼如下。

 

這是存放在excel文件中的cookie數據

 

 

第二步:從excel中讀取cookie_dict,讀取到的cookie_dict放在cookieList列表中,然后從列表中取出一個個字典添加到cookie中,要注意,由於cookie中的httpOnly和secure在存到excel前,他們是布爾類型的,存進去后已經變成string類型了,所以取出來后要轉成布爾類型,才可以添加到cookie中去。添加完成后,刷新即可免密登錄CSDN。

 

import os
import time
import xlrd
from selenium import webdriver

current_path=os.path.dirname(__file__)
webdriver_path=os.path.join(current_path,'../webdriver/chromedriver.exe')
driver=webdriver.Chrome(executable_path=webdriver_path)
driver.implicitly_wait(10)
driver.get('https://www.csdn.net/')
driver.maximize_window()
# (2)從excel讀取cookie並添加 workbook=xlrd.open_workbook('CSND_Cookie.xls') worksheet=workbook.sheet_by_name('sheet1') # 使用for循環讀取cookie信息,並存放到cookieList表中。 cookie_list=[] for row_num in range(1,worksheet.nrows): cookie_dict={} cookie_dict["domain"]=worksheet.cell_value(row_num,0) cookie_dict["httpOnly"]=bool(worksheet.cell_value(row_num,1)) #excel中的是true false是String類型,這里需要轉換成bool類型 cookie_dict["name"]=worksheet.cell_value(row_num,2) cookie_dict["path"]=worksheet.cell_value(row_num,3) cookie_dict["secure"]=True if worksheet.cell_value(row_num,4)=='TRUE' else False #也可以使用三目運算符把String類型轉換成布爾類型 cookie_dict["value"]=worksheet.cell_value(row_num,5) cookie_list.append(cookie_dict) # 添加cookie for cookie in cookie_list: driver.add_cookie(cookie) #添加后刷新瀏覽器自動登錄 time.sleep(3) driver.refresh()

 

以上兩段代碼親測可用,如有問題,歡迎交流哦

 


免責聲明!

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



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