在自己的VPS上利用v2ray+Tor打造代理IP池

在自己的VPS上利用v2ray+Tor打造代理IP池

v2ray轮询+Tor多链路,每次请求都可以拿到一个不同的IP

当我们做以下业务的时候,可能会需要大量代理IP:

  • HTTP CC/DDOS网站
  • 爬虫,突破反爬
  • 基于IP判断用户的投票系统,刷票
  • 玩pixelcanvas类型的像素画网站,用IP判断不同用户的
  • ……

互联网上免费代理IP的网站很多,自建代理IP池的方法也很多。比如下面这个项目:

constverum/ProxyBroker

包括国内也有一些类似的项目。

但这些方式都有缺点,比如代理IP稳定性不可靠,需要后期二次手动校验;国外代理国内访问有困难;匿名性没有很好的保证等等。

今天介绍一种我摸索出来的方法,利用v2ray+Tor自建代理IP池。你需要有一台自己的VPS。

1. 在VPS上安装Tor命令行版本

debian/ubuntu可以运行命令:

1
apt install -y tor

centos可以运行命令:

1
yum install -y tor

安装好后,编辑/etc/tor/torrc,进行如下编辑(部分配置项):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SOCKSPort 38801 #这里开启多个tor端口,对于tor来说,每个端口会使用不同的链路,也就是不同的代理IP
SOCKSPort 38802
SOCKSPort 38803
SOCKSPort 38804
SOCKSPort 38805
SOCKSPort 38806
SOCKSPort 38807
SOCKSPort 38808
SOCKSPort 38809
SOCKSPort 38810

SOCKSPolicy accept 127.0.0.1 #为了安全性,只允许localhost访问tor的端口
SOCKSPolicy reject *

NewCircuitPeriod 30 #对于每个端口来说,每30秒重新创建一个新链路,也就是换一个新IP
CircuitBuildTimeout 10 #对于新建每个链路的过程来说,建立程序超过10秒则直接放弃,保障了连接到线路的质量

/etc/tor/torrc进阶配置:

ip使用指定方式:

1
ExitNodes ip/fingerprint #指定ip地址或指纹

1
2
ExitNodes {tw} #指定地区 多选用“,”分隔,例:{tw},{uk},{zw},地区码表参考文末码表
StrictNodes 1 #设为1则强制使用您指定的地区的节点,若设为0则可能会无视您的设置

避开指定方式访问网站:(黑名单)

1
2
ExcludeExitNodes {tw} #不使用该地区的出口节点
ExcludeNodes {tw} #不使用该地区的所有类型的节点,即入口、中继、桥连何出口节点。

2. 在VPS上配置v2ray桥接到tor端口

请参考v2ray的官方文档,这里outbounds部分配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"outbounds": [{
...(此处省略)
{
"protocol": "socks",
"settings": {
"servers": [{
"address": "127.0.0.1",
"port": 38801
},{
"address": "127.0.0.1",
"port": 38802
},
...(此处省略)
{
"address": "127.0.0.1",
"port": 38810
}]
},
"tag": "my-tor"
}
]

outbounds中配置了一个tag为my-tor的socks出口,其中加入刚才tor开的一堆端口。v2ray会以轮询的方式使用每个端口,这样就可以做到每个连接都用不同的IP。

routing部分配置如下:

1
2
3
4
5
6
7
8
9
10
"routing": {
"rules": [{
{
"inboundTag": ["websocket-over-https"],
"network": "tcp",
"outboundTag": "my-tor", #需要和上面outbound的tag名字一样
"type": "field"
}
]
}

然后自行配置一个inbound(这里不列出),我这里的配置是websocket-over-https。关于如何配置inbound,可以参考v2ray白话文教程。也可以使用v2-ui

3. 本地连接v2ray,测试可用性

本地我使用v2rayN连接VPS的v2ray,开启本地端口是10808。

我使用以下脚本进行测试:

1
2
3
4
5
6
7
8
#!/bin/bash
n=0
while [ $n -lt 80 ]; do
echo "${n}:"
curl -x socks5://127.0.0.1:10808 ifconfig.me #curl -x是指定代理方式连接,ifconfig.me是一个查询外网IP的网站
echo ""
n=$((n+1))
done
image-20230210093542621

这样就完成了。你可以增加tor开放socks端口的数量,也可以缩小NewCircuitPeriod的数值,做到尽可能的每次访问都用一个全新的IP。

4. 其他贴士

4.1. VPS连v2ray速度太慢了?

尝试给选用基于HTTPS的v2ray inbound协议,套一层Cloudflare CDN。使用better-cloudflare-ip这个项目自选最快的cf节点。

4.2. 如何进行HTTP CC/DDOS攻击?

由于v2rayN开放的本地端口是socks协议,而很多CC/DDOS软件只支持HTTP代理。那么可以安装一个proxifier,把相应软件的流量强行导向v2rayN开放的本地socks端口。

4.3. 有什么优点?

  • IP几乎是无限的、并且是高可用的
  • 匿名性非常高

4.4. 有什么缺点?

  • 有些网站禁止tor节点的IP访问
  • 速度不如国内的代理IP快
  • 请仔细查看你VPS提供商的ToS,需要不禁止你在机子上跑tor

4.5 Tor区域码表

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
ASCENSION ISLAND:ac
AFGHANISTAN:af
ALAND:ax
ALBANIA:al
ALGERIA:dz
ANDORRA:ad
ANGOLA:ao
ANGUILLA:ai
ANTARCTICA:aq
ANTIGUA AND BARBUDA:ag
ARGENTINA REPUBLIC:ar
ARMENIA:am
ARUBA:aw
AUSTRALIA:au
AUSTRIA:at
AZERBAIJAN:az
BAHAMAS:bs
BAHRAIN:bh
BANGLADESH:bd
BARBADOS:bb
BELARUS:by
BELGIUM:be
BELIZE:bz
BENIN:bj
BERMUDA:bm
BHUTAN:bt
BOLIVIA:bo
BOSNIA AND HERZEGOVINA:ba
BOTSWANA:bw
BOUVET ISLAND:bv
BRAZIL:br
BRITISH INDIAN OCEAN TERR:io
BRITISH VIRGIN ISLANDS:vg
BRUNEI DARUSSALAM:bn
BULGARIA:bg
BURKINA FASO:bf
BURUNDI:bi
CAMBODIA:kh
CAMEROON:cm
CANADA:ca
CAPE VERDE:cv
CAYMAN ISLANDS:ky
CENTRAL AFRICAN REPUBLIC:cf
CHAD:td
CHILE:cl
PEOPLE'S REPUBLIC OF CHINA:cn
CHRISTMAS ISLANDS:cx
COCOS ISLANDS:cc
COLOMBIA:co
COMORAS:km
CONGO:cg
CONGO (DEMOCRATIC REPUBLIC):cd
COOK ISLANDS:ck
COSTA RICA:cr
COTE D IVOIRE:ci
CROATIA:hr
CUBA:cu
CYPRUS:cy
CZECH REPUBLIC:cz
DENMARK:dk
DJIBOUTI:dj
DOMINICA:dm
DOMINICAN REPUBLIC:do
EAST TIMOR:tp
ECUADOR:ec
EGYPT:eg
EL SALVADOR:sv
EQUATORIAL GUINEA:gq
ESTONIA:ee
ETHIOPIA:et
FALKLAND ISLANDS:fk
FAROE ISLANDS:fo
FIJI:fj
FINLAND:fi
FRANCE:fr
FRANCE METROPOLITAN:fx
FRENCH GUIANA:gf
FRENCH POLYNESIA:pf
FRENCH SOUTHERN TERRITORIES:tf
GABON:ga
GAMBIA:gm
GEORGIA:ge
GERMANY:de
GHANA:gh
GIBRALTER:gi
GREECE:gr
GREENLAND:gl
GRENADA:gd
GUADELOUPE:gp
GUAM:gu
GUATEMALA:gt
GUINEA:gn
GUINEA-BISSAU:gw
GUYANA:gy
HAITI:ht
HEARD & MCDONALD ISLAND:hm
HONDURAS:hn
HONG KONG (china):hk
HUNGARY:hu
ICELAND:is
INDIA:in
INDONESIA:id
IRAN, ISLAMIC REPUBLIC OF:ir
IRAQ:iq
IRELAND:ie
ISLE OF MAN:im
ISRAEL:il
ITALY:it
JAMAICA:jm
JAPAN:jp
JORDAN:jo
KAZAKHSTAN:kz
KENYA:ke
KIRIBATI:ki
KOREA, DEM. PEOPLES REP OF:kp
KOREA, REPUBLIC OF:kr
KUWAIT:kw
KYRGYZSTAN:kg
LAO PEOPLE'S DEM. REPUBLIC:la
LATVIA:lv
LEBANON:lb
LESOTHO:ls
LIBERIA:lr
LIBYAN ARAB JAMAHIRIYA:ly
LIECHTENSTEIN:li
LITHUANIA:lt
LUXEMBOURG:lu
MACAO:mo
MACEDONIA:mk
MADAGASCAR:mg
MALAWI:mw
MALAYSIA:my
MALDIVES:mv
MALI:ml
MALTA:mt
MARSHALL ISLANDS:mh
MARTINIQUE:mq
MAURITANIA:mr
MAURITIUS:mu
MAYOTTE:yt
MEXICO:mx
MICRONESIA:fm
MOLDAVA REPUBLIC OF:md
MONACO:mc
MONGOLIA:mn
MONTENEGRO:me
MONTSERRAT:ms
MOROCCO:ma
MOZAMBIQUE:mz
MYANMAR:mm
NAMIBIA:na
NAURU:nr
NEPAL:np
NETHERLANDS ANTILLES:an
NETHERLANDS, THE:nl
NEW CALEDONIA:nc
NEW ZEALAND:nz
NICARAGUA:ni
NIGER:ne
NIGERIA:ng
NIUE:nu
NORFOLK ISLAND:nf
NORTHERN MARIANA ISLANDS:mp
NORWAY:no
OMAN:om
PAKISTAN:pk
PALAU:pw
PALESTINE:ps
PANAMA:pa
PAPUA NEW GUINEA:pg
PARAGUAY:py
PERU:pe
PHILIPPINES (REPUBLIC OF THE):ph
PITCAIRN:pn
POLAND:pl
PORTUGAL:pt
PUERTO RICO:pr
QATAR:qa
REUNION:re
ROMANIA:ro
RUSSIAN FEDERATION:ru
RWANDA:rw
SAMOA:ws
SAN MARINO:sm
SAO TOME/PRINCIPE:st
SAUDI ARABIA:sa
SCOTLAND:uk
SENEGAL:sn
SERBIA:rs
SEYCHELLES:sc
SIERRA LEONE:sl
SINGAPORE:sg
SLOVAKIA:sk
SLOVENIA:si
SOLOMON ISLANDS:sb
SOMALIA:so
SOMOA,GILBERT,ELLICE ISLANDS:as
SOUTH AFRICA:za
SOUTH GEORGIA, SOUTH SANDWICH ISLANDS:gs
SOVIET UNION:su
SPAIN:es
SRI LANKA:lk
ST. HELENA:sh
ST. KITTS AND NEVIS:kn
ST. LUCIA:lc
ST. PIERRE AND MIQUELON:pm
ST. VINCENT & THE GRENADINES:vc
SUDAN:sd
SURINAME:sr
SVALBARD AND JAN MAYEN:sj
SWAZILAND:sz
SWEDEN:se
SWITZERLAND:ch
SYRIAN ARAB REPUBLIC:sy
TAIWAN (china):tw
TAJIKISTAN:tj
TANZANIA, UNITED REPUBLIC OF:tz
THAILAND:th
TOGO:tg
TOKELAU:tk
TONGA:to
TRINIDAD AND TOBAGO:tt
TUNISIA:tn
TURKEY:tr
TURKMENISTAN:tm
TURKS AND CALCOS ISLANDS:tc
TUVALU:tv
UGANDA:ug
UKRAINE:ua
UNITED ARAB EMIRATES:ae
UNITED KINGDOM (no new registrations):gb
UNITED KINGDOM:uk
UNITED STATES:us
UNITED STATES MINOR OUTL.IS.:um
URUGUAY:uy
UZBEKISTAN:uz
VANUATU:vu
VATICAN CITY STATE:va
VENEZUELA:ve
VIET NAM:vn
VIRGIN ISLANDS (USA):vi
WALLIS AND FUTUNA ISLANDS:wf
WESTERN SAHARA:eh
YEMEN:ye
ZAMBIA:zm
ZIMBABWE:zw

本文仅提供技术思路,请勿用于非法业务。

参考文章:

在自己的VPS上利用v2ray+Tor打造代理IP池 (skyju.cc)

TOR浏览器进阶使用指南:指定or禁止 出口节点 - 知乎 (zhihu.com)


在自己的VPS上利用v2ray+Tor打造代理IP池
https://aunero.github.io/2023/02/vps-v2ray-tor-ipproxy.html
作者
AuthurNero
发布于
2023年2月10日
许可协议