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为什么适合做大数据分析和自动化测试了吧。自动化的适用场景就相当于一个盒子无法从内部破解,里面的机关太过于繁琐和复杂。但是这个盒子里面再怎么巧妙,提供给人的用途都是很直观的,就比如汽车。你只需要会开车就行,而不需要去学如何造车。人开车久了难免会累,这时候自动驾驶就来了。就相当于自动化了。

工欲善其事必先利其器!

相关推荐
网安蟹佬霸22 分钟前
Zero Trust零信任架构实战:从架构设计到落地部署
安全·网络安全·ci/cd·架构·自动化·网安
九硕智慧建筑一体化厂家24 分钟前
楼宇智能优选!KNX总线系统打造稳定高效智能控制体系
运维·人工智能·笔记·智慧城市
正在走向自律25 分钟前
数采与虚拟仿真技术在电力智能运维赛道的实践探索
运维·数据采集·虚拟仿真·技能竞赛·人机协同·惯性动捕·电力智能运维
楠楠子呀33 分钟前
独立站聊天转化全链路:从二维码引流到数据复盘
java·javascript·数据仓库·python·c#·自动化·etl
qq_113601493542 分钟前
CopyEscape Docker容器逃逸(CVE-2026-17106)
运维·docker·容器
修先生1 小时前
WisQuery 一套开箱即用、可 Docker 一键部署的 智能问数 + 知识库 + 智能问答 一体化平台
运维·docker·容器
Rain的Java大神之路1 小时前
Docker搭建Redis集群完全指南
java·运维·redis·后端·docker·容器·架构
智购科技无人售货机厂家1 小时前
2026自动售货机远程运维平台设计:从设备诊断到预测性维护的工程实践~YH
运维·python·物联网·架构·django·scikit-learn
Raas1001 小时前
大模型网关和API网关区别是什么?MAI Gateway统一AI流量治理
java·大数据·运维·人工智能·gateway·企业级·ai网关
F&C嘉准传感器2 小时前
超细聚焦光纤传感模组:微米级极小光斑,精密微型元器件组装定位零偏差
人工智能·安全·目标检测·自动化·产品运营