【分享】不被電信熱點限速!自製 Android 全套工具,免 root 繞過熱點偵測(開源)

感謝分享 先推
我用兩隻手機
1.
三星Fold8裝中華5G卡開熱點
5G-Proxy-Pro 開啟5G代理

2.三星S26連上Fold8熱點
5G Proxy Client 啟動隧道

以上這樣可行嗎?
SOCKS5伺服器應該要填甚麼?

謝謝
FT.JB
可以,server可以設定port和驗證,使用預設值也沒關係,反正他不暴露在公網,client要設定server在區域網路上的IP
目前測試Rule會吃封包造成內網不穩定 排除會偶發被轉走或掉包 網路便很不穩定

以下是我CODEX的解析 供你參考

127/8 現在已經在上層判定 DIRECT,再增加多少條 DIRECT Rule,都無法避免底層捕捉與回注。
因此它只能保證「正常走到規則判斷時不使用代理」,不能保證:
- 不進 user-mode queue。
- 不發生封包延遲、亂序或回注失敗。
- 不受錯誤 conntrack 影響。
- 完全不碰 localhost 封包。
而且目前 conntrack 可能在 Rule 前就以 src_port 命中舊代理紀錄,這時連 DIRECT Rule 都不會執行。
但不能說整個 Rule 功能沒用。它對外部流量仍有用途,例如:
- 指定某個程式走代理。
- 特定目的地直連。
- 特定 port 阻擋。
- 在多個代理間選擇。
只是目前的 DIRECT 更準確的名稱應該是:
Captured Passthrough(捕捉後原樣回注)

而不是:
True Bypass(完全不攔截)

所以正確架構應該是:
- 127.0.0.0/8、::1:在 WinDivert filter 層直接 bypass。
- TCP 33100、UDP 33200:保留 relay 例外。
- 其他程式/目的地規則:繼續由上層 Rule 決定 DIRECT/PROXY/BLOCK。
- 同時修正 port-only TCP conntrack。
換句話說,上層 Rule 沒辦法修好 localhost 這個問題,必須改底層 filter。


作者確實「有加入」,但加入的是上層自動 DIRECT,不是底層封包排除。
目前狀況:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- IPv6 fc00::/7
- 作用中網卡的 on-link 網段
都會被判定為 DIRECT,但封包仍然:
WinDivert 捕捉
→ user-mode queue
→ conntrack
→ checksum
→ WinDivertSend 回注
所以功能上「不走外部代理」通常成立,但穩定性上仍可能:
- 延遲或掉包。
- 被錯誤 conntrack 覆蓋。
- 既有長連線局部 timeout。
- 虛擬網卡啟動或換 IP 後,on-link cache 沒即時更新。
- ::1 因程式 bug 沒有正確識別。
而且 LAN 判斷在舊 conntrack 之後;若相同 src_port 已有舊代理紀錄,封包可能在抵達 LAN/DIRECT 判斷前就被改送到 relay。
因此比較準確的說法是:
作者加入了「內網自動直連政策」,但沒有實作「內網底層 bypass」。

不代表每條內網連線都必定失敗;低流量、沒有 port collision 時通常正常。但依你目前已經出現短連線與既有 MySQL 長連線 timeout 的證據,這個版本在你的多服務/Docker/大量 localhost 連線環境下,確實不夠穩定。
Gpc wrote:
目前測試Rule會吃...(恕刪)


感謝你這麼深入的分析,判斷基本上完全正確,我逐項對照過原始碼確認了。這三個架構性問題我已經全部修好了:

1. 內網/localhost 底層 bypass — 已修 你說得對,舊版是「Captured Passthrough」:127.x/::1 在上層被判 DIRECT 後原樣回注,但封包還是進了 user-mode queue(延遲、排隊、掉包的來源)。現在已改成在 WinDivert filter 層直接排除 127.0.0.0/8 和 ::1,loopback 封包完全不再被捕捉。我用驅動實測過:同一台機器產生 loopback 流量,舊 filter 會攔到、新 filter 是零捕捉。

2. TCP conntrack 的 port-only 問題 — 已修 這點抓得很準。舊版 TCP 條目只用 src_port 當 key,程式異常關閉(沒 FIN/RST)時殘留條目最長會活 1 小時;Windows 又很激進地重用臨時埠——新連線若抽到同一個埠,封包會在抵達 LAN/DIRECT 判斷前就被舊的 PROXY 條目改送進 relay,症狀就是「偶發被轉走」。現已改為完整 key(src_port + family + 原始目的地):stale 條目對不同目的地必然 miss,封包正常走規則評估;同埠不同目的地也可並存。另外你環境(Docker/多服務/大量 localhost 連線)最容易踩中這個,跟你的 MySQL 長連線 timeout 症狀吻合。

3. on-link cache 不更新 — 已修 正確,原本只在啟動時抓一次網卡網段。現在 cleanup thread 每 10 秒刷新一次,虛擬網卡中途啟動或 DHCP 換 IP 都會被納入。

補充兩點:::1 識別在目前版本其實已正確處理;亂序問題也在上一版修掉了(單一 receiver + per-flow 工作緒)。你的 CODEX 分析裡「正確架構應該是……」那段的建議方向,這次就是照著做的。新版本麻煩你再測一下多服務環境的穩定性,特別是 MySQL 長連線那段,有狀況再回報給我,謝謝!

https://github.com/tokyoxpa3/NetRedirector/releases/
FT.JB wrote:
感謝你這麼深入的分析...(恕刪)


樓主您好。
非常感謝您的開發實在是太造福大眾了

我在其他板頁看到你的留言,裡面有這句話。
"兩個5G門號聚合的網速下載東西奇快,平均1Gbps以上"

這句我不太了解,當時你的意思是
兩張SIM卡裝在同一個手機執行 5G Proxy Pro,這樣嗎?
還是我有兩個手機各一個sim卡,合併執行同一個5G Proxy Pro?
又或者兩個手機各一個sim卡各執行一個5G Proxy Pro,pc端負載平橫同時使用兩條網路?
我對這個用法感到十分羨慕及技術的精湛。
spysndb wrote:
樓主您好。非常感謝您...(恕刪)


哈囉,感謝捧場!

你猜得很接近了,正確答案是第三種的變形:

我是兩支手機、各插一張 5G SIM,各自開一個 5G Proxy Pro,把每支手機變成一個獨立的 SOCKS5 代理端點。然後在電腦上跑支持同時間主線路和多代理網速聚合的下載器,我剛好開發了一款https://github.com/tokyoxpa3/MultiSocksDownloader,一次掛上這兩個代理位址,讓它把下載流量同時聚合兩條 5G 線路和一條原來家用PPPoE網路的網速。

這樣同時間三條網路的頻寬就能疊加,所以下載大檔案時才會常常看到破 1Gbps 的速度。重點是「多代理同時下載」這件事是在 PC 端完成的,手機端只是單純各當一條代理出口而已。

至於第一個選項(單支手機塞兩張卡)為什麼不行——市面上大多數手機是雙卡雙待(DSDS),兩張卡不會同時跑數據,只能二選一,所以疊不起來。除非你的手機有雙卡雙待雙通(DSDA)而且支援兩張卡同時上網,那種才有機會,但比較少見,我也沒特別去試。

有興趣的話可以自己照這個方向搭看看,兩張不限速吃到飽的門號效果最明顯。祝你玩得愉快!
裝好了 但SOCKS5 永遠回傳空白 有什麼偵錯的方法嗎 謝謝
b_ wrote:
裝好了 但SOCKS5...(恕刪)


感謝回報!「SOCKS5 回傳空白」通常是「代理有在跑,但流量沒真正從 5G 走出去」,這點過去不容易用肉眼看是哪一段出問題。

新版本 v1.6.1 加了一個「自我檢測」按鈕,直接在 App 裡就能幫你定位,完全不用接電腦或下 adb 指令:

更新到 v1.6.1 → 按「🚀 一鍵開啟 5G 代理」
等狀態變成「✅ 5G Proxy Running」
按「🧪 自我檢測」——它會自動依序測「TCP 連線 → SOCKS5 握手 → CONNECT 隧道 → 資料回流」四步,直接顯示是哪一步 ❌
如果還是失敗,請再按「📋 複製診斷報告」把內容貼給我,我看一眼就能知道確切原因。

幾個可以先自行確認的常見原因:

客戶端 SOCKS5 的 IP 要填 App 上顯示的「Wi-Fi 代理」IP、Port 填 1080;帳密要跟 App 設定一致(兩欄都留空=不啟用認證)。
手機要有 5G/4G 訊號,且 App 的「5G 行動 IP」要顯示出公網 IP,而不是「尚未鎖定」。

https://github.com/tokyoxpa3/5G-Proxy-Pro/releases
b_
手機自我檢測正常,有甚麼方法可以診斷 NetRedirector
哥 早上好 想詢問為何我的進程攔截規則會無法新增規則呢?

FT.JB
要設定目標進程,*是全部
永恆o東
OK了! 想詢問IP這些設定完之後,重新開機再啟動這個程式,原本設定好的東西都會恢復成預設狀態是正常的嗎? 謝謝
b_ wrote:
裝好了 但SOCKS5...(恕刪)


手機自我檢測正常,只代表「手機那一段」是通的,不等於「電腦 → 手機」這一段通。NetRedirector 是「電腦端」連到手機 SOCKS5 的客戶端,所以要在 NetRedirector 這邊測。請依序做:

第一步(最重要):先按「測試所有代理連線 (Ping)」

到「Proxies」分頁,點「測試所有代理連線 (Ping)」。這個按鈕會完整跑一遍 SOCKS5 握手 → CONNECT → 連到 api.ipify.org 取出口 IP,跟實際會走的線路一模一樣,而且失敗會直接告訴你原因:

✅ 顯示「測試成功: MyPhone → 某個 IP」=代理配置正確,問題在「規則」這一段(跳第三步)。
❌ 顯示「超時」=電腦連不到手機。通常是 IP/Port 填錯、電腦跟手機不在同一網段,或手機熱點開了「AP 隔離」。
❌ 顯示「連線被拒」=手機服務沒開。
❌ 顯示「帳號或密碼錯誤」=兩邊帳密不一致。
第二步:確認 IP 填的是手機 App 顯示的那個

NetRedirector 的代理 IP 要填 5G-Proxy-Pro App 上顯示的「Wi-Fi 代理 IP」、Port 填 1080,帳密跟 App 設定一致(兩欄都空=不認證)。先確認電腦能 ping 到手機那個 IP,ping 不通就是網段/防火牆/AP 隔離的問題。

第三步:測試通過但程式仍空白 → 看「Monitor」分頁

Monitor 會即時列出被攔截的流量。如果程式開著卻看不到程式的流量,代表規則根本沒命中,流量沒進到 SOCKS5——這才是「回傳空白」最常見的原因。請到「Rules」分頁確認:

進程名稱要對(設定全局*,指定程序名 xxx.exe 或PID)。
動作選「代理 (轉發)」。
代理要選到「[Custom] 你的手機代理」。
補充說明一個已知行為:NetRedirector 的核心層在「上游 SOCKS5 握手失敗」時是靜默斷線,程式端只會看到空白、沒有任何錯誤訊息。所以請不要用「程式有沒有反應」來判斷,用上面那個「測試所有代理連線」按鈕看。
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 7)

今日熱門文章 網友點擊推薦!