Python3+selenium实现cookie免密登录的示例代码

进过两天的研究终于实现了cookie的免密登录,其实就是session。特别开心,因为在Python爬虫群里问那些大佬,可是他们的回答令我寒心,自己琢磨!!!

靠谁比如靠自己,为此我总结下经验,以免入门的小白再次踩这样的吭。其实网上很多博客写的都比较不详细甚

首先问题自己思考,不懂得去群里问问,然后最重要的要理解事物的本质,只有理解后才能运用它;最后在百度一下把所有相关的博客都点开,一条一条的看一遍总结下规律,比较喽的就舍弃,这样基本上都能得到启发作用。比如selenium的本质就是操作浏览器的,那么操作cookie也是操作浏览器的,并且用selenium打开浏览器时什么都没有,如果进入某个网站就会生成cookie先关信息。等待,那么我们可以用selenium打开网站之后让他清除所有cookie避免干扰,然后睡眠20秒以便等我们登陆,这是就会产生cookie,我们将它获取下来就可以实现登陆了。

下面直接上代码:

# 登录
def login_jd():
  # 登录前清除所有cookie
  browser.get('https://www.baidu.com/')
  browser.delete_all_cookies()

  # 打印登录前的cookie
  cookieBefore = browser.get_cookies()
  print(cookieBefore)

  print("------------------------------------------------------------------------")
  time.sleep(2)
  list_cookies = [
    {'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1420_21120_29074_29237_2518_2909_29134_2832_28585_26350_2913'},
    {'domain': '.baidu.com', 'expiry': 159184274.325927, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'FF789623EA1785FF0D55ED0401D057B2:FG=1'},
    {'domain': 'www.baidu.com', 'expiry': 1563289, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '123143'},
    {'domain': '.baidu.com', 'expiry': 1560354688.892916, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5BF6F3CD40255D22BCDA1598'},
    {'domain': '.baidu.com', 'expiry': 1819468287.471656, 'httpOnly': True, 'name': 'BDUSS', 'path': '/', 'secure': False, 'value': 'tGem1JzblNpOa1VVek0yLThmbWR6RxENWZtcVNwUThpT2hCLTVsUFBQUFBJCQAAAAAAAAAAAEAAAA4MdBAd3d3d2dnZ2dnZWVlZWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkI~1y5CP9cVm'},
    {'domain': '.baidu.com', 'expiry': 2569420288, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '587A2695FCD6D043A5FE5139E4F'},
    {'domain': '.baidu.com', 'expiry': 3707755.819949, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '156027786'},
    {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}
  ]

  # 获取之后的cookie
  cookies = browser.get_cookies()
  print(browser.get_cookies())

  # 将获取的的所有cookies添加到浏览器
  for cookie in list_cookies:
    browser.add_cookie(cookie)
    print(cookie)
  time.sleep(2)
  # 刷新页面即可更新cookie
  browser.refresh()
  time.sleep(505)
  browser.quit()

示例二:

首先使用用户名和账号,登录获取cookie

import json
import time
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementException

class Crawler():
  def gather():
    chrome_options = Options()
    chrome_options.add_argument("window-size=1024,768")
    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='C:\devtool\Anaconda\Scripts\chromedriver')
    wait = WebDriverWait(driver, 1)
    ##登录百度知道
    logurl = 'https://zhidao.baidu.com/'
    #登录前清楚所有cookie
    driver.delete_all_cookies()
    driver.get(logurl)
    ##登录前打印cookie
    print(driver.get_cookies())

    ##点击登录按钮
    driver.find_element_by_xpath('//*[@id="userbar-login"]').click()
    # driver.find_element_by_id("userbar-login").click()
    time.sleep(2)
    ##首次尝试的 默认进入扫码登录的界面
    try:
      footerULoginBtn = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]')
      footerULoginBtn.click() #切换到用户名和密码登录
      footerULoginBtn_not_exist = False
    except:
      footerULoginBtn_not_exist = True

    ## 用户名跟密码的设置并点击提交
    user = driver.find_element_by_name('userName')
    user.clear()
    pwd = driver.find_element_by_name('password')
    pwd.clear()
    submit = driver.find_element_by_id('TANGRAM__PSP_10__submit')
    time.sleep(2)
    user.send_keys('用户名')
    pwd.send_keys('密码')
    time.sleep(1)
    submit.click()
    time.sleep(1)
    ## 发送手机验证码 验证
    ##点击发送按钮
    ###是否需要输入手机验证码
    try:
      driver.find_element_by_xpath('//*[@id="TANGRAM__28__button_send_mobile"]').click()
      time.sleep(10)
      ##使用shell交互式,接受验证码
      message = input("Tell me the captcha: ")
      ##输入验证码
      captcha = driver.find_element_by_xpath('//*[@id="TANGRAM__28__input_label_vcode"]')
      time.sleep(1)
      captcha.send_keys(message)
      time.sleep(1)
      ##点击提交
      driver.find_element_by_xpath('//*[@id="TANGRAM__28__button_submit"]').click()
      time.sleep(3)
    except:
      time.sleep(1)

    ### 获取cookie
    cookie = driver.get_cookies()
    print(cookie)
    jsonCookies = json.dumps(cookie)
    with open('vcyber.json', 'w') as f:
      f.write(jsonCookies)

    time.sleep(30)

Crawler.gather()

获取cookie后,可以不用输入密码登录

import json
import time
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementException

class Crawler():
  def gather():
    chrome_options = Options()

    chrome_options.add_argument("window-size=1024,768")
    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='C:\devtool\Anaconda\Scripts\chromedriver')
    wait = WebDriverWait(driver, 1)

    ##登录百度知道
    logurl = 'https://zhidao.baidu.com/'

    #登录前清楚所有cookie
    driver.delete_all_cookies()
    driver.get(logurl)

    f1 = open('vcyber.json')
    cookie = f1.read()
    cookie = json.loads(cookie)
    for c in cookie:
      driver.add_cookie(c)
    # # 刷新页面
    driver.refresh()

Crawler.gather()

到此这篇关于Python3+selenium实现cookie免密登录的示例代码的文章就介绍到这了,更多相关selenium cookie免密登录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用selenium 3.7和python3添加cookie模拟登陆的实现

    前言 随着Python3的普及,Selenium3也跟上了行程.而Selenium3最大的变化是去掉了Selenium RC,另外就是Webdriver从各自浏览器中脱离,必须单独下载.本文就来介绍了关于selenium 3.7+python3实现添加cookie模拟登陆的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.背景介绍 最近做一个爬虫项目,用selenium调用浏览器去获取渲染后的源码,但是每次登陆都需要手机验证,这真的是头痛啊,这种验证方式不要想着去破

  • selenium中get_cookies()和add_cookie()的用法详解

    在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可以通过内置的函数get_cookies(),它得到的是一组cookie,是由cookie组成的列表.单个的cookie是字典组成的,所有get_cookies()返回值是由字典组成的列表. dictCookies = browser.get_cookies() jsonCookies = json.dumps(dictCookies) # print(jso

  • Python Selenium Cookie 绕过验证码实现登录示例代码

    之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍  1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie_Login.py # Author : Adil # DateTime : 2018/3/20 19:47 # SoftWare : PyCharm from selenium import webdriver import time url = 'https://system.address'

  • Python3+selenium实现cookie免密登录的示例代码

    进过两天的研究终于实现了cookie的免密登录,其实就是session.特别开心,因为在Python爬虫群里问那些大佬,可是他们的回答令我寒心,自己琢磨!!! 靠谁比如靠自己,为此我总结下经验,以免入门的小白再次踩这样的吭.其实网上很多博客写的都比较不详细甚 首先问题自己思考,不懂得去群里问问,然后最重要的要理解事物的本质,只有理解后才能运用它:最后在百度一下把所有相关的博客都点开,一条一条的看一遍总结下规律,比较喽的就舍弃,这样基本上都能得到启发作用.比如selenium的本质就是操作浏览器的

  • 利用Selenium添加cookie实现自动登录的示例代码(fofa)

    介绍 Selenium可以模拟浏览器进行自动化操作,但一些网站需要进行登录才能进行一些操作,比起输入账号密码,cookie是更加方便的.而且fofa首先登录邮箱账号时获得的cookie并不是fofa的cookie,因此我们直接选择利用fofa的cookie进行自动登录.但是selenium需要先打开一个网站才会加载进去cookies,因此我们需要将cookies写在代码中,加载进去 扩展 get_cookies(): 获得所有cookie信息. get_cookie(name): 返回字典的ke

  • Python selenium+cookie实现免密登陆的示例代码

    目录 获取cookies: 携带cookies实现免密登陆: 今天爬取airbnb的租房数据时,遇到了登陆问题.自己动手解决了一下. 我们知道,http是无状态的,那么网页如何实现用户登陆注册功能呢?Session和Cookie就是为了满足这种需求出现的技术. 首先介绍一下Session和Cookie的概念. 在Web中Session对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.

  • 使用python的pexpect模块,实现远程免密登录的示例

    说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3).使用python的pexpect模块 下面介绍的代码,是使用python的pexpect模块实现的: 代码 import os import sys import pexpect import datetime #获取昨天的日期 date_yes = (datetime.date.today()-datetime

  • SpringBoot中使用Cookie实现记住登录的示例代码

    最近在做项目,甲方提出每次登录都要输入密码,会很麻烦,要求实现一个记住登录状态的功能,于是便使用 Cookie 实现该功能 一.Cookie 简介 Cookie,一种储存在用户本地终端上的数据,有时也用其复数形式 Cookies.类型为"小型文本文件",是某些网站为了辨别用户身份,进行 Session 跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息. 其实 Cookie 就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器.然后客户端

  • python+selenium 实现扫码免密登录示例代码

    目录 一.需求描述 二.首先扫码登录获取cookies保存到本地未后面免密登录做准备 三.初始化浏览器 四.获取本地保存的cookies实现登录 一.需求描述 web 自动化测试/python爬虫往往会遇到扫码登录的情况,不是所有的网站都支持用户密码登录,遇到这种扫码登录的情况会阻碍我们自动化测试/爬虫的进行,所有为了可以顺畅的进行我们的需求,在进行自动化或者爬虫前我们首先要解决扫码登录的问题,下面讲解如何实现扫码免密登录. 二.首先扫码登录获取cookies保存到本地未后面免密登录做准备 具体

  • flask框架实现修改密码和免密登录功能

    修改密码功能 数据库部分: #重置密码 def reset_pass(phone,password): conn,cursor=get_conn() sql="update userdata set userpass='"+password+"' where userphone='"+phone+"'" try: print("正在修改密码...") resetflag=cursor.execute(sql) conn.com

  • 服务器免密登录的实现以及异常解决方案

    当我们在现在创建测试用Linux服务器或者服务器集群的时候,需要通过终端连接自己创建的服务器. 实现步骤分为2步: 1.生成SSH Key: 2.覆盖authorized_keys文件 1.生成SSH Key 我们看到生成了以上一些列文件. 2.覆盖authorized_keys文件 因为authorized_keys文件中存储某个ssh key的公钥.如果不覆盖的话,就只能使用这个公钥登录了.不知道理解的对不对.欢迎指正. 3.配置无效,还是需要输入密码的解决方案 但是,很多人在这样配置之后还

  • Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题. SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台. 为了在不同平台/网络主机之间的通信安全, 很多时候我们都要通过ssh进行认证. ssh认证方式主要有

  • Hadoop框架起步之图解SSH、免密登录原理和实现方法

    1. 前言 emmm-.最近学习大数据,需要搭建Hadoop框架,当弄好linux系统之后,第一件事就是SSH免密登录的设置.对于SSH,我觉得使用过linux系统的程序员应该并不陌生.可是吧,用起来简单,真让你说出个所以然,还是件比较困难的事(大佬绕路,此篇文章不属于你~).然后,我就好奇心大发,打算写一篇博客详细介绍一下SSH和免密登录的原理及实现. 补充:不管是Hadoop的伪分布还是全分布,Hadoop的名称结点(NameNode)都需要启动集群中所有机器的Hadoop守护进程,而这个过

随机推荐