1. 程式人生 > 其它 >基於frp或nps的遠端遙控手機實現釘釘遠端打卡

基於frp或nps的遠端遙控手機實現釘釘遠端打卡

​[基於frp或nps的遠端遙控手機實現釘釘遠端打卡 - 劉念的個人部落格](https://liunian.js.org/2020/04/24/%E5%9F%BA%E4%BA%8Efrp%E6%88%96nps%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%89%8B%E6%9C%BA%E9%81%A5%E6%8E%A7/ )]

想要實現遠端控制手機已知比較好的商業解決方案有Teamviewer和向日葵。不過價格對於我這種偶爾有需求的窮逼來講確實不太合適。索性自己搭建一個。

​ 對比網上的其他方案優點就是:

  1. 直接控制手機,不光可以釘釘打卡,所有手機的操作都可以做。
  2. 控制是基於adb的,不存在釘釘更新後外掛失效的問題,也沒有被檢測的風險。
  3. 一次搭建永久使用,不需要更新。
  4. 用的都是10K+開源,不存在廣告病毒之類的。

ADB是什麼?

全稱Android Debug Bridge。安卓平臺除錯橋,是連線Android手機與PC端的橋樑,通過adb可以管理、操作模擬器和裝置,如安裝軟體、檢視裝置軟硬體引數、系統升級、執行shell命令等。

​ 理想狀態是手機直接控制手機,就像Teamviewer或向日葵那樣,但是找了好幾天也沒看到有人做這個,無奈只能折中一下使用電腦來控制了。

​ 經過研究方案有兩種,一種需要遠端裝置(被控制端)連線電腦,第二種就是控制端是電腦。

基於frp的方案

​ 基本原理就是控制端(手機,電腦,開發板等終端)

通過frp控制被控制端(電腦,開發板等windowslinux系統的裝置)然後被控制端通過adb來控制手機。

在伺服器上搭建frp

  1. 首先下載frp,在release中找到對應自己系統的版本。

  2. 解壓之後伺服器需要的是frpsfrps.ini,其他檔案可以刪掉了。

  3. 編輯frps.ini:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [common]
    # 繫結埠,根據自己的情況修改
    bind_port = 7000
    # 管理面板的埠,根據自己的情況修改
    dashboard_port = 7500
    # 管理面板的使用者名稱,起一個別人猜不到的
    dashboard_user = admin
    # 管理面板的密碼
    dashboard_pwd = 123456
    # 自定義token
    token = 123456
  4. 之後直接啟動就可以了./frps -c ./frps.ini

  5. 在這我是用pm2來管理啟動項:

    1
    pm2 start -x './frps' -n frp -- -c ./frps.ini

    配置frp客戶端

  6. 還是下載對應系統的frp。我的客戶端是win 10 x64的,所以下載frp_0.32.1_windows_amd64.zip

  7. 下載後解壓,客戶端需要的是frpc.exefrpc.ini,其他不需要的可以刪除了。

  8. 編輯配置檔案frpc.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [common]
    server_addr = 你的伺服器ip
    # 上面配置的bind_port
    server_port = 7000
    # 上面配置的自定義token
    token=123456

    [給你的客戶端起個名字,會顯示在管理面板中]
    # 連結型別
    type = tcp
    # 本地ip
    local_ip = 127.0.0.1
    # 內網穿透的本地埠,因為需要使用windows遠端桌面,所以填預設的3389,如果你修改過mstsc的埠那就按照修改的填寫
    local_port = 3389
    # 遠端埠
    remote_port = 7003
  9. 配置好之後可以啟動試試frpc.exe -c ./frpc.ini

    啟動frp

  10. 可以寫一個bat來一鍵啟動:

    1
    2
    3
    4
    chcp 65001
    @echo. ******點選右上角關閉按鈕或連續兩次Ctrl+C關閉******
    frpc.exe -c ./frpc.ini
    pause
  1. 啟動成功後可以試著用其他裝置控制這臺電腦,windows直接啟動mstsc,手機下載RD Client。利用你的伺服器ip和上面設定的遠端埠(7003)微軟自家東西的配套做的還是非常良心的,免費、好用:

    windows遠端桌面

    1. 連線成功後就可以使用電腦控制手機了。
    2. 在這下載scrcpy,這是一個開源免費在電腦顯示手機畫面並控制手機的工具 (投屏/錄屏/免Root)
    3. 如果你只有一個裝置,直接雙擊scrcpy.exe就可以開始控制了,如果有多個裝置則執行一下.\adb.exe devices找到你的裝置,之後.\scrcpy.exe -s 裝置ID就可控制了

    到這一步就可以實現遠端控制了,但是如果遠端的電腦關機了就不行了。實現遠端關機很簡單,到網上隨便買個智慧插座,然後把bios設定成通電自動開機就可以了。

基於nps的方案

​ 上面基於frp的方案需要遠端有電腦,有的人可能不方便,基於nps的可以免除遠端的電腦。

原理和frp一樣,都是內網穿透,因為nps提供安卓版本的,所以可以直接使用。

nps是一款輕量級、高效能、功能強大的內網穿透代理伺服器。目前支援tcp、udp流量轉發,可支援任何tcp、udp上層協議(訪問內網網站、本地支付介面除錯、ssh訪問、遠端桌面,內網dns解析等等……),此外還支援內網http代理、內網socks5代理、p2p等,並帶有功能強大的web管理端。

在伺服器上搭建nps

  1. 根據你的系統下載nps

  2. 解壓,執行sudo ./nps install來安裝

  3. nps預設配置檔案使用了80,443,8080,8024埠

    80與443埠為域名解析模式預設埠

    8080為web管理訪問埠

    8024為網橋埠,用於客戶端與伺服器通訊

  4. 伺服器上肯定有其他專案,所以不能佔用80和443等埠,在這修改nps.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    appname = nps
    #Boot mode(dev|pro)
    runmode = dev

    #HTTP(S) proxy port, no startup if empty
    http_proxy_ip=0.0.0.0
    http_proxy_port=8001
    https_proxy_port=8443
    https_just_proxy=true
    #default https certificate setting
    https_default_cert_file=conf/server.pem
    https_default_key_file=conf/server.key

    ##bridge
    bridge_type=tcp
    bridge_port=8024
    bridge_ip=0.0.0.0

    # Public password, which clients can use to connect to the server
    # After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
    public_vkey=123

    #Traffic data persistence interval(minute)
    #Ignorance means no persistence
    #flow_store_interval=1

    # log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
    log_level=7
    #log_path=nps.log

    #Whether to restrict IP access, true or false or ignore
    #ip_limit=true

    #p2p
    #p2p_ip=127.0.0.1
    #p2p_port=6000

    #web
    web_host=a.o.com
    web_username=你的使用者名稱
    web_password=你的密碼
    web_port = 7501
    web_ip=0.0.0.0
    web_base_url=
    web_open_ssl=false
    web_cert_file=conf/server.pem
    web_key_file=conf/server.key
    # if web under proxy use sub path. like http://host/nps need this.
    #web_base_url=/nps

    #Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
    #Remove comments if needed
    #auth_key=test
    auth_crypt_key =1234567812345678

    #allow_ports=9001-9009,10001,11000-12000

    #Web management multi-user login
    allow_user_login=false
    allow_user_register=false
    allow_user_change_username=false


    #extension
    allow_flow_limit=false
    allow_rate_limit=false
    allow_tunnel_num_limit=false
    allow_local_proxy=false
    allow_connection_num_limit=false
    allow_multi_ip=false
    system_info_display=false

    #cache
    http_cache=false
    http_cache_length=100

    #get origin ip
    http_add_origin_header=false

    #pprof debug options
    #pprof_ip=0.0.0.0
    #pprof_port=9999
  5. 啟動nps

    sudo nps start

    然後訪問http://你的ip:7501/,看到管理介面就是成功了。

  6. 然後再面板上新增一個客戶端,之後在TCP隧道中配置內網穿透:

    模式:TCP隧道

    服務端埠:7111(根據自己情況填寫)

    目標 (IP:埠):5555adb的遠端除錯埠)

  7. 之後安裝安卓版的nps,填寫你的伺服器ip:埠和剛才配置的唯一驗證金鑰

  8. 之後在你的控制端(比如你家裡的電腦)開啟scrcpy,執行:

    1
    .\scrcpy.exe -s 伺服器IP:7004
  9. 現在你就可以成功在家控制在單位的手機了。

這種方案免除了被控制端的電腦,也就是被控制端(比如單位)只有一部手機就可以了,而且也不需要買智慧插座了。

缺點就是軟體是直接執行在手機上的,某些系統會自動把程序殺掉,如果後臺被清理了那就沒辦法了。

總結

frp的方案是遠端控制你的電腦,然後通過遠端的電腦控制遠端的手機。控制端可以使電腦,手機等各種裝置。

nps是直接控制遠端的手機,但是控制端只能是電腦,而且被控制端可能存在殺後臺等情況。

​ 兩種方法各有利弊,大家可以根據自己的情況進行選擇。

基於frp或nps的遠端遙控手機實現釘釘遠端打卡

https://liunian.js.org/2020/04/24/%E5%9F%BA%E4%BA%8Efrp%E6%88%96nps%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%89%8B%E6%9C%BA%E9%81%A5%E6%8E%A7/