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

工欲善其事必先利其器!

相关推荐
心灵彼岸-诗和远方1 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘1 小时前
NFS服务器
运维·服务器
苹果醋32 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰2 小时前
[linux]docker基础
linux·运维·docker
Jason-河山2 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
lihuhelihu3 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
哲讯智能科技3 小时前
SAP Business One市场价格解析
运维·sap·erp
山东布谷科技官方3 小时前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks3 小时前
渗透测试-Linux基础(1)
linux·运维·安全
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++