使用selenium实现cookies免密登录

一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站。

获取一个可用的cookies

获取的cookies会保存为一个json格式的文件。不过在打开网站后,登录操作需要自己手动进行一下,代码中有注释,大家可以注意一下,

代码如下:

#!/usr/bin/python
#coding=utf-8
   
from selenium import webdriver
import time
import json
   
def get_cookies(test_url):
    #保存cookies的文件
    file = 'cookies.json'
    #打开需要获取cookies的网站
    driver = webdriver.Firefox()
    driver.implicitly_wait(5)
    driver.get(test_url)
    driver.maximize_window()
    #网站打开后,在时间内手动执行登录操作
    time.sleep(60)
    #登录成功后,获取cookies并保存为json格式
    cookies = driver.get_cookies()
    fp = open(file,'w')
    json.dump(cookies,fp)
    fp.close()
    #关闭浏览器
    driver.close()
   
if __name__ == "__main__":
    url = raw_input('please input url:')
    get_cookies(url)

利用cookies登录网站

先打开要登录的网站,然后将cookies从之前保存的json文件读取出来,然后添加到浏览器,刷新界面,即可实现登录,然后便可以进行发微博的操作,具体元素定位,请大家百度selenium的一些基本用法,此处不再赘述。代码中也给出了不打开浏览器的方式来实现功能。

代码如下:

   #!/usr/bin/python
   #coding=utf-8
   
   from selenium import webdriver
   import json
   import time
   
   file = 'cookies.json'
   #打开浏览器,若不想打开浏览器运行脚本,可以使用下面注释掉的方法
   driver = webdriver.Firefox()
   
   #以headless模式运行脚本,可以实现不打开浏览器对网站进行操作
   #option = webdriver.FirefoxOptions()
   #option.add_argument(argument='-headless')
   #driver = webdriver.Firefox(firefox_options=option)
   
   #打开网址
   def open_url(url):
       driver.get(url)
       driver.implicitly_wait(5)
       driver.maximize_window()
   
   #向浏览器添加保存的cookies
   def add_cookies():
       fp = open(file,'r')
       cookies = json.load(fp)
       fp.close()
       for cookie in cookies:
           driver.add_cookie(cookie)  
   
   if __name__ == "__main__":
       #输入要打开的网站并打开
       test_url = raw_input('please input url:')
       open_url(test_url)
       time.sleep(5)
       #添加cookies后刷新界面,实现免密登录
       add_cookies()
       driver.refresh()
       # 发送微博
       #定位到微博输入框,点击输入框
       driver.find_element_by_xpath("//textarea[@class='W_input']").click()
       time.sleep(2)
       #输入需要发送的内容
       driver.find_element_by_xpath("//textarea[@class='W_input']").send_keys('Test message')
       time.sleep(3)
       #点击发送按钮
       driver.find_element

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/8887.html

(0)
晴川运维晴川运维
上一篇 2025年6月13日
下一篇 2025年6月13日

相关推荐

  • Linux 服务器状态监控方法

    Linux 服务器我们天天打交道,特别是 Linux 工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展,本篇重点为大家讲解一下Li…

    Linux系统 2025年10月9日
  • Kubernetes共享Ceph存储具体方法

    Kubernetes pod 结合Ceph rbd块设备的使用,让Docker 数据存储在Ceph,重启Docker或k8s RC重新调度pod 不会引起数据来回迁移。 工作原理无…

    Linux系统 2025年10月19日
  • 数据科学行业常用的Python库

    近几年,Python 在数据科学行业的发展十分迅猛,也正因为如此,对于希望提升应用程序功能的数据科学家和机器学习专家来说,Python通常是首选编程语言。并且Python拥有大量的…

    Linux系统 2025年10月10日
  • Linux下使用 Docker托管 .NET Core

    .NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Appli…

    Linux系统 2025年6月13日
  • Github中开源安全工具大全

    本仓库收集的初衷是为向各类企业安全从业人员提供在企业信息安全防护体系建设过程中可以参考的开源安全扫描工具,以期望企业能够利用这些扫描器对自身业务进行自检,从而提高自身业务安全性。 …

    Linux系统 2025年6月8日
  • Swift中自定义操作符

    自定义操作符和操作符重载是一个非常强大的功能,可以让我们构建非常有趣的解决方案。它可以让我们降低呈现型函数调用的冗长,这可能会给我们清洁代码 前言 很少有Swift功能能和使用自定…

    Linux系统 2025年6月29日
  • 讲解一下Varnish安装与配置

    Varnish作用是访问web速度的web加速器,被安装在web服务器之前,从而缓存web服务器的应用程序和数据,最后相应客户的请求。 功能与Squid服务器相似,都可以用来做HT…

    Linux系统 2025年9月21日
  • Linux下安装LDAP

    LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址被使用,不过根据组织者的需要,它可以做得更…

    Linux系统 2025年6月8日
  • Docker使用yum报错解决方法

    dockerfile里或者在容器里执行yum,报错,找不到源(invalid baseurl xxx),但是宿主机上执行yum是没问题的啊,为什么? 因为不论是dockerfile…

    Linux系统 2025年10月8日
  • 详解awk使用实例

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片…

    Linux系统 2025年10月7日

发表回复

登录后才能评论