实现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()

 

以上两段代码亲测可用,如有问题,欢迎交流哦

 

posted @ 2020-05-11 16:53  重走青春LV  阅读(1064)  评论(0编辑  收藏  举报