最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)自動(dòng)化接收與處理手機(jī)驗(yàn)證碼

 更新時(shí)間:2025年03月27日 15:26:11   作者:傻啦嘿喲  
在移動(dòng)互聯(lián)網(wǎng)時(shí)代,短信驗(yàn)證碼已成為身份驗(yàn)證、賬號(hào)注冊等環(huán)節(jié)的重要安全手段,本文將介紹如何利用Python實(shí)現(xiàn)驗(yàn)證碼的自動(dòng)接收,識(shí)別與轉(zhuǎn)發(fā),需要的可以參考下

引言

在移動(dòng)互聯(lián)網(wǎng)時(shí)代,短信驗(yàn)證碼已成為身份驗(yàn)證、賬號(hào)注冊、登錄保護(hù)等環(huán)節(jié)的重要安全手段。然而,手動(dòng)輸入驗(yàn)證碼不僅效率低下,還容易出錯(cuò)。本文將介紹如何利用Python搭建一個(gè)短信轉(zhuǎn)發(fā)器,實(shí)現(xiàn)驗(yàn)證碼的自動(dòng)接收、識(shí)別與轉(zhuǎn)發(fā),讓你的工作生活更加便捷。

一、準(zhǔn)備工作

1.1 硬件與軟件需求

硬件:Android手機(jī)(需開啟開發(fā)者模式)、電腦

軟件:

  • Python環(huán)境(推薦Python 3.6+)
  • ADB工具(Android Debug Bridge)
  • 短信處理庫(如py-android-sms)
  • Web框架(如Flask)
  • 驗(yàn)證碼識(shí)別庫(如ddddocr)

1.2 環(huán)境配置

安裝ADB工具

ADB是Android開發(fā)者工具包的一部分,可通過以下方式安裝:

Windows:從developer.android.com/studio/releases/platform-tools

Mac/Linux:通過終端命令安裝:

# Mac
brew install android-platform-tools
# Ubuntu
sudo apt install android-tools-adb

安裝完成后,運(yùn)行adb version驗(yàn)證安裝是否成功。

  • 啟用手機(jī)開發(fā)者模式
  • 打開手機(jī)“設(shè)置”。
  • 進(jìn)入“關(guān)于手機(jī)”,連續(xù)點(diǎn)擊“版本號(hào)”7次,直到提示“開發(fā)者模式已啟用”。
  • 返回設(shè)置,進(jìn)入“開發(fā)者選項(xiàng)”,打開“USB調(diào)試”。
  • 連接手機(jī)與電腦
  • 將手機(jī)通過USB線連接電腦,運(yùn)行adb devices,若顯示設(shè)備ID則說明連接成功。

安裝Python依賴庫

pip install adb-shell flask ddddocr

二、核心功能實(shí)現(xiàn)

2.1 短信監(jiān)聽與獲取

使用ADB工具監(jiān)聽手機(jī)短信,提取短信內(nèi)容和發(fā)送者信息。

import subprocess
import re
 
def get_sms():
    try:
        # 執(zhí)行ADB命令獲取短信
        result = subprocess.run(
            ["adb", "shell", "content", "query", "--uri", "content://sms/inbox", "--projection", "address,body,date"],
            capture_output=True,
            text=True
        )
        return result.stdout
    except Exception as e:
        print(f"獲取短信失敗: {e}")
        return None
 
def parse_sms(sms_data):
    messages = sms_data.split("\n")
    for message in messages:
        if "body=" in message:
            # 提取短信內(nèi)容
            body_start = message.index("body=") + len("body=")
            body_end = message.index(",", body_start)
            body = message[body_start:body_end]
            # 提取發(fā)送者號(hào)碼
            address_start = message.index("address=") + len("address=")
            address_end = message.index(",", address_start)
            address = message[address_start:address_end]
            yield address, body
 
# 示例:獲取并解析短信
sms_data = get_sms()
if sms_data:
    for address, body in parse_sms(sms_data):
        print(f"發(fā)送者: {address}, 內(nèi)容: {body}")

2.2 驗(yàn)證碼識(shí)別

利用正則表達(dá)式或ddddocr庫識(shí)別短信中的驗(yàn)證碼。

方法一:正則表達(dá)式

def extract_verification_code(sms_body):
    # 假設(shè)驗(yàn)證碼為6位數(shù)字
    code = re.search(r'\b\d{6}\b', sms_body)
    return code.group(0) if code else None

方法二:ddddocr庫

import ddddocr
 
def ocr_verification_code(image_path):
    ocr = ddddocr.DdddOcr()
    with open(image_path, 'rb') as f:
        image = f.read()
    return ocr.classification(image)

2.3 數(shù)據(jù)轉(zhuǎn)發(fā)

通過HTTP請求或WebSocket將識(shí)別出的驗(yàn)證碼轉(zhuǎn)發(fā)到指定的接收端(如Web應(yīng)用、API接口等)。

from flask import Flask, request
 
app = Flask(__name__)
 
@app.route('/forward', methods=['POST'])
def forward():
    data = request.json
    code = data.get('code')
    # 轉(zhuǎn)發(fā)驗(yàn)證碼到目標(biāo)地址
    # 例如:requests.post(url, json={'code': code})
    return {'status': 'success', 'message': f'驗(yàn)證碼 [code] 已轉(zhuǎn)發(fā)'}
 
if __name__ == '__main__':
    app.run(port=5000)

三、高級(jí)功能擴(kuò)展

3.1 多設(shè)備支持

通過多線程或異步編程,擴(kuò)展程序以支持多個(gè)Android設(shè)備同時(shí)工作。

import threading
 
def monitor_device(device_id):
    while True:
        sms_data = get_sms(device_id)
        if sms_data:
            for address, body in parse_sms(sms_data):
                code = extract_verification_code(body)
                if code:
                    forward(code)
 
# 啟動(dòng)多個(gè)設(shè)備監(jiān)控線程
devices = ['device1', 'device2', 'device3']
for device in devices:
    thread = threading.Thread(target=monitor_device, args=(device,))
    thread.start()

3.2 安全增強(qiáng)

  • 身份驗(yàn)證:在轉(zhuǎn)發(fā)接口中添加Token驗(yàn)證,防止未授權(quán)訪問。
  • 數(shù)據(jù)加密:使用HTTPS協(xié)議傳輸數(shù)據(jù),確保通信安全。

3.3 性能優(yōu)化

  • 緩存機(jī)制:緩存已處理的短信ID,避免重復(fù)處理。
  • 異步處理:使用異步框架(如FastAPI)提高并發(fā)處理能力。

四、實(shí)戰(zhàn)案例:搭建完整的短信轉(zhuǎn)發(fā)系統(tǒng)

4.1 系統(tǒng)架構(gòu)

手機(jī)(短信接收) -> ADB工具(短信監(jiān)聽) -> Python腳本(解析與識(shí)別) -> Web接口(數(shù)據(jù)轉(zhuǎn)發(fā)) -> 目標(biāo)應(yīng)用

4.2 完整代碼示例

import subprocess
import re
from flask import Flask, request
import threading
 
app = Flask(__name__)
 
def get_sms(device_id=None):
    # 根據(jù)設(shè)備ID獲取短信(多設(shè)備支持)
    command = ["adb", "shell", "content", "query", "--uri", "content://sms/inbox", "--projection", "address,body,date"]
    if device_id:
        command.insert(1, f"-s {device_id}")
    result = subprocess.run(command, capture_output=True, text=True)
    return result.stdout
 
def parse_sms(sms_data):
    messages = sms_data.split("\n")
    for message in messages:
        if "body=" in message:
            body_start = message.index("body=") + len("body=")
            body_end = message.index(",", body_start)
            body = message[body_start:body_end]
            address_start = message.index("address=") + len("address=")
            address_end = message.index(",", address_start)
            address = message[address_start:address_end]
            yield address, body
 
def extract_verification_code(sms_body):
    code = re.search(r'\b\d{6}\b', sms_body)
    return code.group(0) if code else None
 
@app.route('/forward', methods=['POST'])
def forward():
    data = request.json
    code = data.get('code')
    # 實(shí)現(xiàn)轉(zhuǎn)發(fā)邏輯
    print(f"驗(yàn)證碼 [code] 已轉(zhuǎn)發(fā)")
    return {'status': 'success'}
 
def monitor_device(device_id):
    while True:
        sms_data = get_sms(device_id)
        if sms_data:
            for address, body in parse_sms(sms_data):
                code = extract_verification_code(body)
                if code:
                    # 調(diào)用轉(zhuǎn)發(fā)接口
                    app.config['DEBUG'] = False
                    app.config['TESTING'] = False
                    with app.app_context():
                        forward_result = forward(json={'code': code})
                    print(forward_result)
 
if __name__ == '__main__':
    # 啟動(dòng)多個(gè)設(shè)備監(jiān)控線程
    devices = ['device1', 'device2']  # 替換為實(shí)際設(shè)備ID
    for device in devices:
        thread = threading.Thread(target=monitor_device, args=(device,))
        thread.start()
    app.run(port=5000)

4.3 運(yùn)行與測試

  • 將代碼保存為sms_forwarder.py。
  • 連接Android設(shè)備,確保ADB可識(shí)別。
  • 運(yùn)行腳本:python sms_forwarder.py。
  • 發(fā)送測試短信到手機(jī),觀察控制臺(tái)輸出和轉(zhuǎn)發(fā)結(jié)果。

五、總結(jié)與展望

本文介紹了如何使用Python搭建短信轉(zhuǎn)發(fā)器,實(shí)現(xiàn)驗(yàn)證碼的自動(dòng)接收、識(shí)別與轉(zhuǎn)發(fā)。通過結(jié)合ADB工具、短信處理庫和Web框架,我們構(gòu)建了一個(gè)高效、穩(wěn)定的系統(tǒng)。未來,可以進(jìn)一步擴(kuò)展功能,如支持更多類型的驗(yàn)證碼識(shí)別、添加圖形界面、實(shí)現(xiàn)云端部署等,讓短信轉(zhuǎn)發(fā)器更加智能、易用。

到此這篇關(guān)于Python實(shí)現(xiàn)自動(dòng)化接收與處理手機(jī)驗(yàn)證碼的文章就介紹到這了,更多相關(guān)Python驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python將CSV文件轉(zhuǎn)化為HTML文件的操作方法

    Python將CSV文件轉(zhuǎn)化為HTML文件的操作方法

    很多朋友問小編Python如何將CSV文件轉(zhuǎn)化為HTML文件,csv文件讀取怎么操作呢?帶著這些問題一起通過本文學(xué)習(xí)吧
    2021-06-06
  • python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例

    python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例

    下面小編就為大家?guī)硪黄猵ython3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • 在pandas中更改列類型方式

    在pandas中更改列類型方式

    這篇文章主要介紹了在pandas中更改列類型方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-10-10
  • Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作之命名實(shí)例提取

    Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作之命名實(shí)例提取

    自然語言處理(?Natural?Language?Processing,?NLP)是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法
    2021-11-11
  • python的語句結(jié)構(gòu)你真的了解嗎

    python的語句結(jié)構(gòu)你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了python的語句結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析

    Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析

    這篇文章主要介紹了Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python中的文本相似度的計(jì)算方法總結(jié)

    Python中的文本相似度的計(jì)算方法總結(jié)

    在自然語言處理(NLP)領(lǐng)域,文本相似度計(jì)算是一個(gè)常見的任務(wù),本文為大家整理了Python中的文本相似度常見計(jì)算方法,希望對大家有所幫助
    2023-05-05
  • 深入學(xué)習(xí)Python中的裝飾器使用

    深入學(xué)習(xí)Python中的裝飾器使用

    @這個(gè)操作符讓裝飾器在Python代碼中非常醒目,而裝飾器的運(yùn)用中也包含著很多Python編程中的高級(jí)技巧,這里我們就來共同深入學(xué)習(xí)Python中的裝飾器使用
    2016-06-06
  • python實(shí)用的快捷語法技巧大全

    python實(shí)用的快捷語法技巧大全

    初識(shí)Python語言,覺得python滿足了我上學(xué)時(shí)候?qū)幊陶Z言的所有要求,下面這篇文章主要給大家介紹了關(guān)于python實(shí)用的快捷語法技巧的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Python實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)

    Python實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

石嘴山市| 盘锦市| 新乡县| 涟水县| 承德市| 长海县| 大渡口区| 信丰县| 乡城县| 延津县| 江川县| 苍山县| 池州市| 辽宁省| 南靖县| 罗源县| 潮州市| 团风县| 神木县| 惠州市| 宁陕县| 宁津县| 平昌县| 二手房| 南城县| 民权县| 辰溪县| 深圳市| 五常市| 松溪县| 永善县| 陆丰市| 资兴市| 汨罗市| 蒙自县| 桑植县| 武穴市| 阳山县| 红河县| 英吉沙县| 九江市|