终极利器!利用appium和mitmproxy登录获取cookies
2024-10-18 18:30:27
环境搭建
参考我之前写的https://www.cnblogs.com/c-x-a/p/9163221.html
appium
代码start_appium.py
# -*- coding: utf-8 -*-
# @Time : 2018/10/8 11:00
# @Author : cxa
# @File : test.py
# @Software: PyCharmctx
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import base64
def start_appium():
desired_caps = {}
desired_caps['platformName'] = 'Android' # 设备系统
desired_caps['deviceName'] = '127.0.0.1:62001' # 设备名称
desired_caps['appPackage'] = 'com.xxxx.xxxx' # 测试app包名,如何获取包名方式看上面的环境搭建。
desired_caps['appActivity'] = 'com.xxxx.xxxx.xxx.xxxx' # 测试appActivity,如何获取包名方式看上面的环境搭建。
desired_caps['platformVersion'] = '4.4.2' # 设备系统的安卓版本,版本不要太高,设计安全策略得外部因素。
desired_caps['noReset'] = True # 启动后结束后不清空应用数据
desired_caps['unicodeKeyboard'] = True # 此两行是为了解决字符输入不正确的问题
desired_caps['resetKeyboard'] = True # 运行完成后重置软键盘的状态
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动app,启动前记得打开appium服务。
wait = WebDriverWait(driver, 60)#设置等待事件
try:
btn_xpath = '//android.widget.Button[@resource-id="com.alicom.smartdail:id/m_nonum_confirm_btn"]'
btn_node = wait.until(EC.presence_of_element_located((By.XPATH, btn_xpath)))#等元素出现再继续,最长等待时间上面设置的60s。
# btn_node=driver.find_element_by_xpath(btn_xpath)
btn_node.click()
except:
driver.back()
btn_xpath = '//android.widget.Button[@resource-id="com.alicom.smartdail:id/m_nonum_confirm_btn"]'
btn_node = wait.until(EC.presence_of_element_located((By.XPATH, btn_xpath)))
# btn_node = driver.find_element_by_xpath(btn_xpath)
btn_node.click()
# sleep 30s
# 点击
def login_in(driver):
id_xpath = '//android.widget.EditText[@content-desc="账户名输入框"]'
id_node = driver.find_element_by_xpath(id_xpath)
id_node.clear()
id_node.send_keys("test")
pwd = str(base64.b64decode("MTIzNHF3ZXI="), 'u8')
pwd_xpath = '//android.widget.EditText[@content-desc="密码输入框"]'
pwd_node = driver.find_element_by_xpath(pwd_xpath)
pwd_node.clear()
pwd_node.send_keys(pwd)
submit = "//android.widget.Button[@text='登录']"
submit_node = driver.find_element_by_xpath(submit)
submit_node.click()
time.sleep(10)
if __name__ == '__main__':
start_appium()
mitmproxy
代码
mitm_proxy_script.py
# -*- coding: utf-8 -*-
# @Time : 2018/10/8 11:00
# @Author : cxa
# @File : mitm_proxy_script.py
# @Software: PyCharm
import sys
sitename = 'ali'
def response(flow):
request = flow.request
if '.png' in request.url or 'xxx.x.xxx.com' not in request.url:
return #如果不在观察的url内则返回
if 'xxx.x.xxx.com' in request .url:
print(request .url)
cookies = dict(request.cookies) #转换cookies格式为dict
if cookies:
save_cookies(repr(cookies))#如果不为空保存cookies
def save_cookies(cookies):
sys.path.append("../")
from database import getcookies
getcookies.insert_data(sitename, cookies) #保存cookies
最新文章
- Replace Temp with Query
- AudioRecord类获取录音音量分贝数
- U盘插入电脑后,提示需要格式化U盘如何解决?
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)
- 让AutoMapper更好用
- selectNodes
- postgres-xc手册生成方法
- Linux下解压后缀名为".tar.xz"的文件
- [Redis]Redis的设计与实现-链表/字典/跳跃表
- java程序启动 环境属性的获取
- Jmeter Dash Report(HTML Report)删除Hits Per Second graph的方法
- JS输入框正则校验
- Java入门第一章知识点总结
- 接收Android数据 递归显示表格数据
- WinThruster清理电脑注册表
- Eclipse+Spring学习(一)环境搭建(转)
- 匿名内部类中关于new Runnable()的使用
- (转) 基于MapReduce的ItemBase推荐算法的共现矩阵实现(一)
- python爬虫(1)--Urllib库的基本使用
- beforeFilter()
热门文章
- HTML5之HTTP协议
- alpha冲刺随笔(一)
- OneZero第四周第三次站立会议(2016.4.13)
- BZOJ2431 HAOI2009逆序对数列(动态规划)
- BZOJ2744 HEOI2012朋友圈(二分图匹配)
- GCD LCM UVA - 11388 (思维。。水题)
- bzoj1047&;bzoj1012
- POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径)
- Nginx反向代理下IIS获取真实IP
- c/c++ 某些特殊数的大小