Skip to content

Commit 668a7b8

Browse files
committed
优化v2ray代理池,增加系统代理开关
1 parent b78938b commit 668a7b8

File tree

12 files changed

+180
-55
lines changed

12 files changed

+180
-55
lines changed

002-V2rayPool/README.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,27 @@
2828
1. 下载[v2ray-core-v4.31.0](https://github.com/v2fly/v2ray-core/releases/download/v4.31.0/v2ray-macos-64.zip)
2929
2. 配置解压目录的路径:
3030
```python
31-
Config.set_v2ray_core_path('xxx/Downloads/v2ray-macos-64')
31+
Config.set_v2ray_core_path('xxx/v2ray-macos-64')
3232
```
3333
3. 查看是否能正常启动:
3434
```python
35-
client.Creator().v2ray_start('ss://[email protected]:43893#github.com/freefq%20-%20%E7%BD%97%E9%A9%AC%E5%B0%BC%E4%BA%9A%20%2041')
35+
client.Creator().v2ray_start('xxx')
36+
#如果需要开启全局代理
37+
client.Creator().v2ray_start('xxx',True)
3638
```
3739

38-
## 2022-1-4检测可用测试节点(注意去掉后面","开始的内容):
40+
## 2022-1-11检测可用测试节点(注意去掉后面","开始的内容):
3941
```shell
40-
vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIkBTU1JTVUItVjMyLeS7mOi0ueaOqOiNkDpzdW8ueXQvc3Nyc3ViIiwNCiAgImFkZCI6ICIxMzcuMTc1LjMwLjI1MSIsDQogICJwb3J0IjogIjExMSIsDQogICJpZCI6ICI3N2NkNzc1Yy0xYzBhLTExZWMtYTFhOC0wMDE2M2MxMzkzYTgiLA0KICAiYWlkIjogIjAiLA0KICAic2N5IjogImF1dG8iLA0KICAibmV0IjogInRjcCIsDQogICJ0eXBlIjogIm5vbmUiLA0KICAiaG9zdCI6ICIxMzcuMTc1LjMwLjI1MSIsDQogICJwYXRoIjogIiIsDQogICJ0bHMiOiAiIiwNCiAgInNuaSI6ICIiDQp9,137.175.30.251,美国加利福尼亚圣何塞
41-
vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BbHZpbjk5OTkvbmV3LXBhYy93aWtpIOS/hOe9l+aWr2czIiwNCiAgImFkZCI6ICIxOTQuMTU2LjEyMC41MiIsDQogICJwb3J0IjogIjQxMDAyIiwNCiAgImlkIjogImViYjkzZTg0LTViYjctMTFlYy04YmM2LTZhNWM2ZTA1NGU0ZCIsDQogICJhaWQiOiAiMCIsDQogICJuZXQiOiAidGNwIiwNCiAgInR5cGUiOiAibm9uZSIsDQogICJob3N0IjogIiIsDQogICJwYXRoIjogIiIsDQogICJ0bHMiOiAiIiwNCiAgInNuaSI6ICIiDQp9,194.156.120.52,俄罗斯新西伯利亚
42-
vmess://eyJ2IjoiMiIsInBzIjoi57+75aKZ5YWaZmFucWlhbmdkYW5nLmNvbV9DTl8xMiIsImFkZCI6InNoY24yLTAxLmlwbGMxODguY29tIiwicG9ydCI6IjEwMDE2IiwiaWQiOiI4OTdhMTlmMC04ZGYxLTRiYTEtYTRhOC0wNTMzMWE4MmMyYWIiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6InRjcCIsInR5cGUiOiJub25lIiwiaG9zdCI6InNoY24yLTAxLmlwbGMxODguY29tIiwicGF0aCI6Ii8iLCJ0bHMiOiIiLCJzbmkiOiIifQ==,44.242.96.255,美国俄勒冈波特兰 亚马逊云
43-
vmess://eyJ2IjoiMiIsInBzIjoi57+75aKZ5YWaZmFucWlhbmdkYW5nLmNvbV9DTl8xNCIsImFkZCI6InNoY24yLTAxLmlwbGMxODguY29tIiwicG9ydCI6IjEwMDEyIiwiaWQiOiI4OTdhMTlmMC04ZGYxLTRiYTEtYTRhOC0wNTMzMWE4MmMyYWIiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6InRjcCIsInR5cGUiOiJub25lIiwiaG9zdCI6InVzYS1idWZmYWxvLmx2dWZ0LmNvbSIsInBhdGgiOiIvd3MiLCJ0bHMiOiIiLCJzbmkiOiIifQ==,136.175.179.25,美国加利福尼亚洛杉矶
44-
vmess://eyJ2IjoiMiIsInBzIjoi57+75aKZ5YWaZmFucWlhbmdkYW5nLmNvbV9DTl8xNiIsImFkZCI6InNoY24yLTAxLmlwbGMxODguY29tIiwicG9ydCI6IjEwMDE0IiwiaWQiOiI4OTdhMTlmMC04ZGYxLTRiYTEtYTRhOC0wNTMzMWE4MmMyYWIiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6InRjcCIsInR5cGUiOiJub25lIiwiaG9zdCI6InY5LnNzcnN1Yi5jb20iLCJwYXRoIjoiL3NzcnN1YiIsInRscyI6IiIsInNuaSI6IiJ9,3.70.63.126,德国法兰克福 亚马逊云
45-
vmess://eyJ2IjoiMiIsInBzIjoi57+75aKZ5YWaZmFucWlhbmdkYW5nLmNvbV9DTl8yMyIsImFkZCI6InNoY24yLTAxLmlwbGMxODguY29tIiwicG9ydCI6IjEwMDExIiwiaWQiOiI4OTdhMTlmMC04ZGYxLTRiYTEtYTRhOC0wNTMzMWE4MmMyYWIiLCJhaWQiOiIxIiwic2N5IjoiYXV0byIsIm5ldCI6InRjcCIsInR5cGUiOiJub25lIiwiaG9zdCI6IiIsInBhdGgiOiIiLCJ0bHMiOiIiLCJzbmkiOiIifQ==,103.138.75.27,中国香港
46-
<p><font face="宋体">v2ray客户端电脑版最新版本可添加trojan及vless,114.43.135.233,中国台湾台北 中華電信
42+
ss://YWVzLTI1Ni1nY206MWY2YWNhM2NlYmQyMWE0Y2Q1YTgwNzE4ZWQxNmI3NGNAMTIwLjIzMi4yMTQuMzY6NTAwMg#%F0%9F%87%B8%F0%9F%87%ACSingapore,8.25.96.100,美国 Level3
43+
ss://[email protected]:8119#github.com/freefq%20-%20%E6%96%B0%E5%8A%A0%E5%9D%A1OVH%201,139.99.62.207,新加坡 OVH
44+
ss://[email protected]:7002#github.com/freefq%20-%20%E7%91%9E%E5%85%B8%20%203,167.88.61.60,美国加利福尼亚圣克拉拉
45+
ss://[email protected]:3389#github.com/freefq%20-%20%E7%BE%8E%E5%9B%BD%E5%8D%8E%E7%9B%9B%E9%A1%BFCogent%E9%80%9A%E4%BF%A1%E5%85%AC%E5%8F%B8%204,38.143.66.71,美国华盛顿西雅图 Cogent
46+
trojan://[email protected]:8443#github.com/freefq%20-%20%E5%8A%A0%E6%8B%BF%E5%A4%A7%20%2012,142.47.89.64,加拿大安大略
47+
ss://[email protected]:9101#github.com/freefq%20-%20%E7%BE%8E%E5%9B%BD%20%2013,172.99.190.87,美国乔治亚亚特兰大
48+
ss://[email protected]:8091#github.com/freefq%20-%20%E6%8C%AA%E5%A8%81%20%2019,46.29.218.6,挪威
4749
```
4850

49-
注意:本程序虽可跨平台,但因博主能力有限,无法在更多系统上去尝试和改进,望谅解!
51+
注意:本程序虽可跨平台,但因博主能力有限,只在macos系统操作过,无法在更多系统上去尝试和改进,望谅解!
5052

5153
-------
5254

002-V2rayPool/base/net_proxy.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ def get_header(self, headers, key):
4242
else:
4343
return ''
4444

45+
def update_agent(self):
46+
self.USER_AGENT = self._ua.random() # 随机生成的agent
47+
self._headers = {"user-agent": self.USER_AGENT, 'Connection': 'close'}
48+
4549
def get_urls(self) -> []:
4650
"""需子类实现"""
4751
pass

002-V2rayPool/core/client.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from core.conf import Config
1010
from core.group import Vmess, Vless, Socks, SS, Mtproto, Trojan, Group, Dyport
1111
from core.utils import ProtocolType
12+
import core.utils as util
1213

1314

1415
class ClientWriter:
@@ -251,25 +252,27 @@ def __kill_threading(self):
251252
a = os.popen("kill %d" % int(pid)).read()
252253
except Exception as e:
253254
pass
255+
util.sys_proxy_off()
254256

255-
def __child_thread(self, url: str):
257+
def __child_thread(self, url: str, isSysOn: False):
256258
self.generateAndWrite(url)
257259
# 执行就可,不需要知道结果
258-
cur_dir = os.path.dirname(os.path.abspath(__file__))
259260
if Config.get_v2ray_core_path() is None:
260261
raise Exception('请先调用#Config.set_v2ray_core_path 设置路径')
261262
v2ray_path = os.path.join(Config.get_v2ray_core_path(), 'v2ray')
262-
config_path = os.path.join(cur_dir, 'config.json')
263+
config_path = os.path.join(Config.get_v2ray_core_path(), 'config.json')
263264
os.popen("%s -config %s >/dev/null 2>&1" % (v2ray_path, config_path))
264265
print("%s -config %s >/dev/null 2>&1" % (v2ray_path, config_path))
266+
if isSysOn:
267+
util.sys_v2ray_on()
265268

266-
def v2ray_start(self, url: str):
269+
def v2ray_start(self, url: str, isSysOn: False):
267270
self.__kill_threading()
268-
self.__child_thread(url)
271+
self.__child_thread(url, isSysOn)
269272

270-
def v2ray_start_with_log(self, url: str):
273+
def v2ray_start_with_log(self, url: str, isSysOn: False):
271274
try:
272-
self.v2ray_start(url)
275+
self.v2ray_start(url, isSysOn)
273276
except Exception as e:
274277
print(e)
275278
print("启动异常:%s" % url)

002-V2rayPool/core/config.json

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,29 @@
1616
"clients": null
1717
},
1818
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
1927
}
2028
],
2129
"outbounds": [
2230
{
23-
"protocol": "vmess",
31+
"protocol": "shadowsocks",
2432
"settings": {
25-
"vnext": [
33+
"servers": [
2634
{
27-
"address": "api.ssfree.ru",
28-
"port": 443,
29-
"users": [
30-
{
31-
"id": "8a94a54e-6e40-11ec-bb14-000017022008",
32-
"alterId": 64,
33-
"security": "aes-128-gcm"
34-
}
35-
]
35+
"address": "139.99.62.207",
36+
"method": "aes-256-gcm",
37+
"ota": false,
38+
"password": "cdBIDV42DCwnfIN",
39+
"port": 8119
3640
}
3741
]
38-
},
39-
"streamSettings": {
40-
"security": "",
41-
"tlsSettings": {},
42-
"wsSettings": {},
43-
"httpSettings": {},
44-
"network": "tcp",
45-
"kcpSettings": {},
46-
"tcpSettings": {},
47-
"quicSettings": {}
48-
},
49-
"mux": {
50-
"enabled": true
5142
}
5243
},
5344
{
@@ -58,13 +49,6 @@
5849
"tag": "direct"
5950
}
6051
],
61-
"dns": {
62-
"servers": [
63-
"8.8.8.8",
64-
"8.8.4.4",
65-
"localhost"
66-
]
67-
},
6852
"routing": {
6953
"domainStrategy": "IPIfNonMatch",
7054
"rules": [

002-V2rayPool/core/json_template/client.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
"clients": null
1717
},
1818
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
1927
}
2028
],
2129
"outbounds": [

002-V2rayPool/core/json_template/client_socks.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
"clients": null
1717
},
1818
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
1927
}
2028
],
2129
"outbounds":

002-V2rayPool/core/json_template/client_ss.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
"clients": null
1717
},
1818
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
1927
}
2028
],
2129
"outbounds": [

002-V2rayPool/core/json_template/client_trojan.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
"clients": null
1717
},
1818
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
1927
}
2028
],
2129
"outbounds": [

002-V2rayPool/core/utils.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ def kill_all_v2ray():
198198
a = os.popen("kill %d" % int(pid)).read()
199199
except Exception as e:
200200
pass
201+
sys_proxy_off()
201202

202203

203204
# netstat -nlp | grep :1080 | awk '{print $7}' | awk -F\" / \" '{ print $1 }'
@@ -207,3 +208,24 @@ def kill_process_by_port(port):
207208
print(pids)
208209
except:
209210
pass
211+
212+
213+
def sys_proxy_on(proxy, port):
214+
''''控制macOS系统代理'''
215+
os.system('networksetup -setwebproxy wi-fi %s %d' % (proxy, port)) # http
216+
os.system('networksetup -setsecurewebproxy wi-fi %s %d' % (proxy, port)) # https
217+
os.system('networksetup -setsocksfirewallproxy wi-fi %s %d' % (proxy, port)) # socks
218+
219+
220+
def sys_v2ray_on():
221+
# proxy_on("127.0.0.1", 1080)
222+
'''端口要对应起v2ray开启的,具体要看写入config.json文件中inbounds节点部分'''
223+
os.system('networksetup -setwebproxy wi-fi 127.0.0.1 1087')
224+
os.system('networksetup -setsecurewebproxy wi-fi 127.0.0.1 1087')
225+
os.system('networksetup -setsocksfirewallproxy wi-fi 127.0.0.1 1080')
226+
227+
228+
def sys_proxy_off():
229+
os.system('networksetup -setwebproxystate wi-fi off')
230+
os.system('networksetup -setsecurewebproxystate wi-fi off')
231+
os.system('networksetup -setsocksfirewallproxystate wi-fi off')

002-V2rayPool/db/local.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def init(self, config_path, def_url=None):
185185
"""
186186
if def_url is not None:
187187
self.__default_url = def_url
188-
if len(config_path) < len('config.json'):
188+
if len(config_path) < len('(参考用)config.json'):
189189
return False
190190
if not os.path.isfile(config_path):
191191
return False
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
{
2+
"log": {
3+
"access": "",
4+
"error": "",
5+
"loglevel": "info"
6+
},
7+
"inbounds": [
8+
{
9+
"port": "1080",
10+
"listen": "0.0.0.0",
11+
"protocol": "socks",
12+
"settings": {
13+
"auth": "noauth",
14+
"udp": true,
15+
"ip": "127.0.0.1",
16+
"clients": null
17+
},
18+
"streamSettings": null
19+
},
20+
{
21+
"listen": "127.0.0.1",
22+
"protocol": "http",
23+
"settings": {
24+
"timeout": 360
25+
},
26+
"port": "1087"
27+
}
28+
],
29+
"outbounds": [
30+
{
31+
"protocol": "shadowsocks",
32+
"settings": {
33+
"servers": [
34+
{
35+
"address": "167.88.61.60",
36+
"method": "aes-256-gcm",
37+
"ota": false,
38+
"password": "RexnBgU7EV5ADxG",
39+
"port": 7002
40+
}
41+
]
42+
}
43+
},
44+
{
45+
"protocol": "freedom",
46+
"settings": {
47+
"response": null
48+
},
49+
"tag": "direct"
50+
}
51+
],
52+
"routing": {
53+
"domainStrategy": "IPIfNonMatch",
54+
"rules": [
55+
{
56+
"type": "field",
57+
"ip": [
58+
"geoip:private"
59+
],
60+
"outboundTag": "direct"
61+
},
62+
{
63+
"type": "field",
64+
"domain": [
65+
"geosite:cn"
66+
],
67+
"outboundTag": "direct"
68+
},
69+
{
70+
"type": "field",
71+
"domain": [
72+
"geoip:cn"
73+
],
74+
"outboundTag": "direct"
75+
}
76+
]
77+
}
78+
}

002-V2rayPool/test_main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
if __name__ == '__main__':
1616
utils.kill_all_v2ray()
1717
Config.set_v2ray_core_path('/Users/Qincji/Desktop/develop/soft/intalled/v2ray-macos-64') # v2ray内核存放路径
18-
Config.set_v2ray_node_path('/Users/Qincji/Desktop/develop/py/project/PythonIsTools') # 保存获取到节点的路径
18+
Config.set_v2ray_node_path('/Users/Qincji/Desktop/develop/py/project/PythonIsTools/002-V2rayPool') # 保存获取到节点的路径
1919
proxy_url = 'vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIkBTU1JTVUItVjUyLeS7mOi0ueaOqOiNkDpzdW8ueXQvc3Nyc3ViIiwNCiAgImFkZCI6ICIxMTIuMzMuMzIuMTM2IiwNCiAgInBvcnQiOiAiMTAwMDMiLA0KICAiaWQiOiAiNjVjYWM1NmQtNDE1NS00M2M4LWJhZTAtZjM2OGNiMjFmNzcxIiwNCiAgImFpZCI6ICIxIiwNCiAgInNjeSI6ICJhdXRvIiwNCiAgIm5ldCI6ICJ0Y3AiLA0KICAidHlwZSI6ICJub25lIiwNCiAgImhvc3QiOiAiMTEyLjMzLjMyLjEzNiIsDQogICJwYXRoIjogIiIsDQogICJ0bHMiOiAiIiwNCiAgInNuaSI6ICIiDQp9'
2020
dbm = DBManage()
2121
dbm.init() # 必须初始化
2222
if dbm.check_url_single(proxy_url):
2323
urls = dbm.load_urls_by_net(proxy_url=proxy_url)
2424
dbm.check_and_save(urls, append=False)
2525
# print(urls)
26-
# urls = load_unchecked_urls_by_local()
27-
# check_and_save(urls, append=False)
28-
# urls = load_enable_urls_by_local()
29-
# load_urls_and_save_auto()
26+
# urls = dbm.load_unchecked_urls_by_local()
27+
# dbm.check_and_save(urls, append=False)
28+
# urls = dbm.load_enable_urls_by_local()
29+
# dbm.load_urls_and_save_auto()
3030
utils.kill_all_v2ray()

0 commit comments

Comments
 (0)