前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python和Pytest实现登录态的Cookie绕过方法详解

Python和Pytest实现登录态的Cookie绕过方法详解

原创
作者头像
小白学大数据
发布2024-04-09 16:21:44
1520
发布2024-04-09 16:21:44

1. 背景介绍

京东作为中国最大的综合性电商平台之一,拥有庞大的用户群体和海量的商品信息。对于开发人员和测试人员来说,如何高效地进行京东网站的数据爬取和接口测试至关重要。而在进行这些操作时,登录状态是一个不可或缺的环节。本文将介绍如何利用Pytest测试框架,通过模拟用户登录并绕过登录验证,实现保持用户状态的技巧。

2. Cookie工作原理

在介绍如何利用Cookie绕过登录之前,我们先来了解一下Cookie的工作原理。Cookie是服务器发送给浏览器的一小段数据,存储在用户的计算机上。当用户访问网站时,浏览器会将Cookie发送回服务器,从而帮助服务器识别用户身份并保持用户的登录状态。

3. Pytest接口自动化测试实现步骤

3.1 准备工作

首先,我们需要安装好Pytest库,并准备好接口自动化测试所需的测试代码和测试数据。

3.2 获取登录状态的Cookie

在进行京东网站的接口自动化测试之前,首先需要手动进行一次登录操作,并通过浏览器开发者工具或其他方式获取到登录成功后的Cookie信息。

3.3 在测试代码中加入Cookie

在编写接口自动化测试的代码时,将获取到的Cookie信息加入到请求头中,以模拟用户登录状态。

4.实现Cookie绕过的步骤

接下来,我们将详细介绍如何使用Python和Pytest实现Cookie绕过,并以爬取京东网站为例进行说明。

1. 获取登录态Cookie

首先,我们需要获取登录态的Cookie。我们可以使用Selenium模拟登录京东网站,并从浏览器中获取登录后的Cookie信息。

代码语言:python
复制
from selenium import webdriver
import random

# 随机生成UA
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
]

# 随机选择一个UA
user_agent = random.choice(user_agents)

# 设置Chrome选项
options = webdriver.ChromeOptions()

# 设置UA
options.add_argument(f'user-agent={user_agent}')

# 设置代理
options.add_argument(f'--proxy-server=http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}')

# 启动浏览器
driver = webdriver.Chrome(options=options)

# 打开京东登录页面
driver.get('https://passport.jd.com/new/login.aspx')

# 输入账号密码并登录
driver.find_element_by_id('loginname').send_keys('your_username')
driver.find_element_by_id('nloginpwd').send_keys('your_password')
driver.find_element_by_id('loginsubmit').click()

# 获取登录后的Cookie
cookies = driver.get_cookies()

# 关闭浏览器
driver.quit()

# 将Cookie转换成字典形式
cookie_dict = {cookie['name']: cookie['value'] for cookie in cookies}

2. 使用Pytest进行测试

接下来,我们将使用Pytest编写测试用例,并在测试过程中使用已获取的登录态Cookie。

代码语言:python
复制
import pytest
import requests

@pytest.fixture(scope='session')
def login_cookie():
    return cookie_dict

def test_crawl_jd_data(login_cookie):
    url = 'https://www.jd.com/'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
    response = requests.get(url, headers=headers, cookies=login_cookie)
    assert response.status_code == 200
    assert '京东' in response.text

在上述代码中,我们定义了一个login_cookie的fixture,用于获取登录态Cookie。然后,我们编写了一个测试用例test_crawl_jd_data,在该测试用例中,我们发送了一个带有登录态Cookie的请求,并断言返回状态码为200,并且响应中包含了“京东”关键字。

3. 运行测试

最后,我们可以使用Pytest运行测试。

代码语言:python
复制
$ pytest test_jd_crawler.py

5. 注意事项

在使用Cookie绕过登录的过程中,需要注意以下几点:

  • Cookie的安全性:登录状态的Cookie包含了用户的身份信息,需要妥善保管,避免泄露给其他人。
  • Cookie的有效期:京东网站的Cookie可能会有有效期限制,需要定期更新或重新获取。
  • 动态变化的Cookie:京东网站的Cookie可能会根据用户登录状态、操作行为等动态变化,需要在测试中进行相应的处理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 使用Pytest进行测试
  • 3. 运行测试
  • 5. 注意事项
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档