python自动化登录(测试篇)

起初是想抓取下请求看能不能做模拟登录。无奈发现,目标网站的请求数据是加密过的,而且网站代码也是编译后的代码。要从编译后的代码中提取加密算法。我的第一想法是明知不可为而不为。但是转念一想,何不试试python大法。

1.前期准备

python我是真不会,属于半吊子的那种。作为纯前端开发人员,我只是基于兴趣以及开发语言万变不离其宗的换套不换药的至理,闲暇之余,看了看php,看了看java,看了看易语言,看了看python,仅此而已。

所以,我分享的都是一些小工具,类似代码片段的拿来即用的东西。对于初学者或者新手也是通俗易懂的东西吧。

python版本:3.12 window10安装python附带的版本。该版本自带pip,推荐

安装依赖库pip install selenium (自动化模拟操作依赖)

pip install colorama (控制台输出字体颜色依赖)

2.模拟测验

这里测试的网址是航空网站,仅测试。该博客仅做技术分享以及技术思维扩展。切勿进行非法行为。

login.py代码:

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from colorama import init, Fore

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

# 打开登录页面
driver.get('https://b2c.csair.com/B2C40/modules/bookingnew/manage/login.html?lang=cn&returnurl=https://coep.csair.com/enterprise/#/personalEmailAuth?recommendCode=&actionType=')
print(Fore.RED + "开始模拟登录,请等待...")
tab = driver.find_element(By.CLASS_NAME, 'member-login')
tab.click()
driver.implicitly_wait(2)
# 在用户名和密码输入框中输入
account = driver.find_element(By.ID, 'userId')
account.send_keys('xxxx')

# 等待第一个输入框出现并点击
first_input = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, 'passWordPH'))
)
first_input.click()  # 点击第一个输入框使其获得焦点

# 等待第二个输入框出现
second_input = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, 'passWord'))
)

# 在第二个输入框中输入密码
second_input.send_keys('xxxx')


check = driver.find_element(By.ID, 'loginProtocol')
check.click()

print(Fore.GREEN + "账号:xxxx")
print(Fore.GREEN + "密码:xxxx")

# 提交登录表单
btn = driver.find_element(By.ID, 'mem_btn_login')
btn.click()

# 等待页面加载完成,然后抓取响应内容
# 页面加载完成后,获取页面源代码
WebDriverWait(driver, 10).until(
    # 这里需要一个条件,比如等待某个特定元素出现
    EC.presence_of_element_located((By.CLASS_NAME, 'xo-input-container'))
)
cookies = driver.get_cookies()
# 打印获取到的 cookie 信息
for cookie in cookies:
 #   print(Fore.BLUE + f"Name: {cookie['name']}, Value: {cookie['value']}")
    if cookie['name'] == 'cs1246643sso':
        print(f"token: {cookie['value']}")
        break

print(Fore.RED + "登录结束,关闭浏览器!")
# 关闭浏览器
driver.quit()

原理 :这里是利用自动化模拟网页登录操作,通过

driver = webdriver.Chrome()来打开浏览器,然后输入网址打开网页,再通过获取一系列标签元素进行触发点击事件。再把登录得cookie等相关信息进行控制台打印输出。

实操结果:

3.结束语

有时候通过一些小例子,更能方便我们理解。比如什么叫python自动化。这个小例子就是了。所以每个语言都有它的长处和魅力所在,现在知道python为什么适合做大数据分析和自动化测试了吧。自动化的适用场景就相当于一个盒子无法从内部破解,里面的机关太过于繁琐和复杂。但是这个盒子里面再怎么巧妙,提供给人的用途都是很直观的,就比如汽车。你只需要会开车就行,而不需要去学如何造车。人开车久了难免会累,这时候自动驾驶就来了。就相当于自动化了。

工欲善其事必先利其器!

相关推荐
舒一笑19 小时前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData21 小时前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
梦想很大很大2 天前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
Sinclair2 天前
内网服务器离线安装 Nginx+PHP+MySQL 的方法
运维
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
甲鱼9293 天前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
碳基沙盒5 天前
OpenClaw 多 Agent 配置实战指南
运维
蝎子莱莱爱打怪8 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
DianSan_ERP9 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅9 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑