zoukankan      html  css  js  c++  java
  • 实现selenium+python3+cookie免密登录CSDN

    分两步来做:

    第一步:登录CSDN并获取cookies,并保存到json文件或者excel文件中,本文使用excel文件保存cookie数据。

    第二步:读取excel文件中的cookie数据,添加cookie信息。

    我们按照步骤一步步来做,第一步:打开CSDN系统,点击登录/注册按钮,跳转到登录页面,有很多种登录方式,我这里使用微信扫码登录获取cookies(因为使用账号、密码登录时需要安全验证,且手动处理失败,没找到解决的办法。),登录后获取到的cookie存到excel文件中。代码如下。

     1 import os
     2 import time
     3 import xlwt,xlrd
     4 from selenium import webdriver
     5 
     6 chrome_path=os.getcwd()+'/webdriver/chromedriver.exe' #这是我的谷歌的浏览器驱动的存放路径
     7 driver=webdriver.Chrome(executable_path=chrome_path)
     8 driver.implicitly_wait(10)
     9 
    10 # (1)手动登录CSDN获取cookie。
    11 driver.get('https://www.csdn.net/')
    12 driver.maximize_window()
    13 driver.find_element_by_link_text('登录/注册').click()#点击登录按钮
    14 time.sleep(20)#等待这段时间要微信手动扫码登录CSDN。(使用账号密码登录时有安全验证,手动拖动失败,没找到解决办法)
    15 cookies=driver.get_cookies()#获取登录后的cookie信息
    16 print(cookies)
    17 # 把cookies的key写入excel文件中第一行
    18 workbook=xlwt.Workbook(encoding='utf-8')
    19 worksheet=workbook.add_sheet('Sheet1')
    20 worksheet.write(0,0,'domain')
    21 worksheet.write(0,1,'httpOnly')
    22 worksheet.write(0,2,'name')
    23 worksheet.write(0,3,'path')
    24 worksheet.write(0,4,'secure')
    25 worksheet.write(0,5,'value')
    26 # 使用for循环把cookie的value值写入接下来的每一行中
    27 for row_num in range(1,len(cookies)+1):#第0行是key值,所以从第一行开始写入value值
    28     worksheet.write(row_num,0,cookies[row_num-1]['domain'])
    29     worksheet.write(row_num,1,cookies[row_num-1]['httpOnly'])
    30     worksheet.write(row_num,2,cookies[row_num-1]['name'])
    31     worksheet.write(row_num,3,cookies[row_num-1]['path'])
    32     worksheet.write(row_num,4,cookies[row_num-1]['secure'])
    33     worksheet.write(row_num,5,cookies[row_num-1]['value'])
    34 cookie_path=os.getcwd()+'/cookiedata/CSND_Cookie.xls'#cookie文件存放路径
    35 workbook.save(cookie_path) #保存文件

    这是存放在excel文件中的cookie数据

    第二步:从excel中读取cookie_dict,读取到的cookie_dict放在cookieList列表中,然后从列表中取出一个个字典添加到cookie中,要注意,由于cookie中的httpOnly和secure在存到excel前,他们是布尔类型的,存进去后已经变成string类型了,所以取出来后要转成布尔类型,才可以添加到cookie中去。添加完成后,刷新即可免密登录CSDN。

     1  1 # (2)从excel读取cookie并添加
     2  2 driver.get('https://www.csdn.net/')
     3  3 time.sleep(3)
     4  4 cookie_path=os.getcwd()+'/cookiedata/CSND_Cookie.xls'
     5  5 workbook=xlrd.open_workbook(cookie_path)
     6  6 worksheet=workbook.sheet_by_index(0)
     7  7 # 使用for循环读取cookie信息,并存放到cookieList表中。
     8  8 cookieList=[]
     9  9 for i in range(1,worksheet.nrows):
    10 10     cookie_dict={
    11 11         "domian":worksheet.cell_value(i,0),
    12 12         "httpOnly":bool(worksheet.cell_value(i,1)),#False、True存放到excel中是字符串了,这里要转成布尔数据
    13 13         "name":worksheet.cell_value(i,2),
    14 14         "path":worksheet.cell_value(i,3),
    15 15         "secure":bool(worksheet.cell_value(i,4)),#False、True存放到excel中是字符串了,这里要转成布尔数据
    16 16         "value":worksheet.cell_value(i,5)
    17 17     }
    18 18     cookieList.append(cookie_dict)
    19 19 #添加字典到cookie中
    20 20 for cookie_dict in cookieList:
    21 21     driver.add_cookie(cookie_dict)
    22 22 driver.refresh()#添加后刷新浏览器 自动登录
    23 23 time.sleep(3)

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

  • 相关阅读:
    pycharm使用常见设置
    LeetCode OJ:Insertion Sort List (插入排序链表)
    LeetCode OJ:Reverse Linked List (反转链表)
    Foundations of Qt Development 学习笔记 Part1 Tips1-50
    TCPL学习毕节:第六章hash表
    TCPL学习笔记:4-12以及4-13。关于使用递归的问题。
    几种常见排序算法的C++描述
    一些灵巧的求并算法
    vs中: 错误,未定义的标识符getline 的解决方法
    QT中给程序加上主界面的图标
  • 原文地址:https://www.cnblogs.com/lvhuayan/p/12649770.html
Copyright © 2011-2022 走看看