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

工欲善其事必先利其器!

相关推荐
learning-striving18 小时前
华为云欧拉操作系统的服务器实例中手工部署 Docker
linux·运维·服务器·docker·容器·华为云
小此方18 小时前
Re:Linux系统篇(十五)工具篇 ·六:GDB 调试从底层逻辑到高阶实战
linux·运维·服务器·chrome
白菜欣1 天前
Linux — 进程控制
android·linux·运维
JoneBB1 天前
ABAP Webservice连接
运维·开发语言·数据库·学习
Tolalal1 天前
Vmware Ubuntu虚拟机扩容
linux·运维·ubuntu
咚为1 天前
比AccessLog更全面的原生Nginx 日志记录
运维·nginx·junit
我星期八休息1 天前
Linux系统编程—基础IO
linux·运维·服务器·c语言·c++·人工智能·算法
大拿爱科技1 天前
低清视频修复怎么接入批处理?AI画质增强流程拆解
人工智能·自动化·aigc·音视频
a752066281 天前
零基础实操:小龙虾 AI OpenClaw 接入 Kimi 详细步骤
运维·服务器