iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Selenium利用cookie免登陆音悦台
  • 844
分享到

Selenium利用cookie免登陆音悦台

Seleniumcookie音悦台 2023-01-30 22:01:38 844人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能利用Cookie可以实现免登陆本次实验以:http://www.yinyuetai.com/ 音悦

Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能

利用Cookie可以实现免登陆


本次实验以:http://www.yinyuetai.com/ 音悦台为例


打开目标网站,点击登录

blob.png


如何获取Cookie信息,方法有很多,可以利用浏览器手动登陆,在Network的Headers里面找到Request Headers,里面就有cookie信息,如下图

blob.png


也可以利用抓包工具获取,这里就不多介绍,有兴趣可自行百度

Selenium也可以获取cookie信息,不过需要利用selenium登陆一次


利用Selenium登陆音悦台代码如下:

from selenium import WEBdriver
import JSON
import time


class LoginYinYueTai(object):
    def __init__(self, url, phone_number, passWord):
        self.url = url
        self.phone_number = phone_number
        self.password = password
        self.browser = self.getbrowser()
        self.run(self.browser)

    def getbrowser(self):
        chrome_options = webdriver.ChromeOptions()
        # 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
        chrome_options.add_argument('headless')
        # 创建chrome无界面对象,设置成无头
        browser = webdriver.Chrome(options=chrome_options,\
                                   executable_path=r'D:\chromedriver_2.41\chromedriver.exe')
        return browser

    def run(self, browser):
        # 打开目标网站
        browser.get(self.url)
        # 清楚之前的cookie信息
        browser.delete_all_cookies()
        # 等待js代码加载
        browser.implicitly_wait(10)
        # 找到登陆按钮,点击登录
        browser.find_element_by_xpath("//div[@class='login fr']\
        /a[@class='loginBtn J_login statisEle']").click()
        # 选中弹出框
        browser.current_window_handle
        # 找到输入手机号的input标签,模拟输入手机号
        browser.find_element_by_xpath(
            "//fORM[@id='login-form']/div[@class='inter-content inter-content-login']\
            //input[@class='login-text-long']").send_keys(self.phone_number)
        # 找到输入密码的input标签,这里匹配上两个标签,所以用elements
        Elements = browser.find_elements_by_xpath("//form[@id='login-form']/div\
        /input[@class='login-text-long']")
        # 找到符合条件的是第二个,模拟输入密码
        Elements[1].send_keys(self.password)
        # 找到登录按钮,并模拟点击登录
        browser.find_element_by_xpath("//form[@id='login-form']//input[@class='login-submit']").click()
        # 设置延迟加载网站内容
        time.sleep(5)
        try:
            # 获取登陆成功后的cookie信息
            login_rear_cookie = browser.get_cookies()
            if login_rear_cookie:
                # 把cookie信息用json序列化后写入cookie.txt文件
                with open('cookie.txt', 'w') as f:
                    f.write(json.dumps(login_rear_cookie))
                print('获取cookie信息成功')
        except Exception as e:
            print('获取cookie失败:{}'.format(e))
        finally:
            # 关闭Chrome浏览器
            browser.quit()


if __name__ == '__main__':
    url = 'Http://www.yinyuetai.com/'
    phone_number = '手机号'
    password = '密码'
    st = LoginYinYueTai(phone_number=phone_number, password=password, url=url)


运行程序,会生成一个cookie.txt文件, pycharm截图如下,

blob.png


cookie.txt文件里面存放的是cookie信息,如下:

blob.png


有了这个cookie.txt文件,就不需要每次都登陆了,下次使用selenium登陆的时候,带上cookie信息,就直接是登陆成功状态


Selenium添加cookie,实现免登陆

代码如下:

from selenium import webdriver
import json
import time


chrome_options = webdriver.ChromeOptions()
browser = webdriver.Chrome(options=chrome_options, 
                           executable_path=r'D:\chromedriver_2.41\chromedriver.exe')

# 读取登陆后的cookie.txt文件
with open('cookie.txt', 'r', encoding='utf8') as f:
    login_rear_cookie_list = json.loads(f.read())

# 清除cookie
browser.delete_all_cookies()

# 打开目标网站
browser.get('http://www.yinyuetai.com')

# 添加cookie
for cookie in login_rear_cookie_list:
    browser.add_cookie(cookie)
time.sleep(5)
# 刷新页面 可以看到已登陆状态,已经成功登陆
browser.refresh()
time.sleep(10)
browser.quit()


运行代码,可以看到用户已登陆成功

blob.png

--结束END--

本文标题: Selenium利用cookie免登陆音悦台

本文链接: https://www.lsjlt.com/news/179173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作