47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import subprocess
|
|
import time
|
|
import os
|
|
import json
|
|
import yaml
|
|
|
|
# 1. 启动 mihomo 并绑定到具体网卡 (en0)
|
|
local_port = 10850
|
|
|
|
cfg = """
|
|
mode: global
|
|
mixed-port: 10850
|
|
bind-address: '127.0.0.1'
|
|
|
|
dns:
|
|
enable: true
|
|
nameserver:
|
|
- https://223.5.5.5/dns-query
|
|
- https://1.1.1.1/dns-query
|
|
|
|
proxies:
|
|
- name: "test-direct"
|
|
type: direct
|
|
interface-name: en0
|
|
"""
|
|
with open("test_b.yaml", "w") as f:
|
|
f.write(cfg)
|
|
|
|
# 找到 mihomo
|
|
mihomo = "./.venv/bin/mihomo"
|
|
if not os.path.exists(mihomo):
|
|
mihomo = "mihomo"
|
|
|
|
proc = subprocess.Popen([mihomo, "-f", "test_b.yaml"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
time.sleep(2)
|
|
|
|
try:
|
|
from curl_cffi import requests
|
|
resp = requests.get("http://httpbin.org/ip", proxies={"http": "socks5://127.0.0.1:10850", "https": "socks5://127.0.0.1:10850"}, impersonate="chrome")
|
|
print("Mihomo (direct bound to en0) IP:", resp.json()["origin"])
|
|
|
|
resp_direct = requests.get("http://httpbin.org/ip", impersonate="chrome")
|
|
print("System (Surge default) IP:", resp_direct.json()["origin"])
|
|
finally:
|
|
proc.kill()
|
|
os.remove("test_b.yaml")
|