終極利器!利用appium和mitmproxy登錄獲取cookies


 

環境搭建

參考我之前寫的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM