标题可能有点绕,场景如下:Amazon 限制用户(卖家)注册多个账号,会根据 ip 等信息来区分用户。
所以如果有几个账号,想要实现它们同时在线不被关联,应该如何实现?
在线指的是,在浏览器登陆亚马逊网站。
看到有一种叫「超级浏览器」的东西,做外贸的公司一般会花钱去购买。所以它的原理是什么?
如果让我实现:
假如有 5 个账号需要同时在线,需要至少 4 个稳定的其他网络做代理,并且同一台设备需要开启 4 个 server 来连接代理,浏览器还要对每个页面设置不同 local server 代理。SwitchyOmega 好像不能自动为每个 tab 设置不同代理,只有根据规则选用不同代理的功能,所以需要开启 5 个不同浏览器来代理。这样实现起来太麻烦了,所以有什么更好的实现方法吗?
1
PbCopy111 2020-03-15 00:28:55 +08:00
5 张手机卡。
|
2
rexxtem07 2020-03-15 00:32:39 +08:00 via iPhone
5 台 windows 云虚拟机
|
3
vincentxue 2020-03-15 00:35:49 +08:00
开几个 Tor 浏览器选不同的 region ?
|
4
NeinChn 2020-03-15 00:43:26 +08:00 1
多代理还是比较好做的吧,对着现有的 proxy 插件改一下就好了,难度应该不大
不过同网站多 Cookie 支持这个就没那么简单了,得从浏览器层面去 hack 我搜了一下,类似的产品都是直接从 Chromium 改的....例如 Ghost Browser https://sspai.com/post/40750 |
5
janxin 2020-03-15 08:44:50 +08:00 1
Chrome/Firefox 就有这种功能
Chrome 有定义多 user data 功能,使用参数--user-data-dir 即可,创建多个指向不同位置的 user-data 的快捷方式 Firefox 有官方的 Firefox Multi-Account Containers,不过代理分离稍微麻烦点而已 |
9
FaiChou OP @janxin #7 哦哦,就像 4L 中提到的 GhostBrowser 一样,不同 session 的 tab 使用不同的 container,所以也支持单独为 session 设置不同代理吗?
|
10
FaiChou OP @janxin 这种 --user-data-dir 形式是相当于另开启一个浏览器进程,所以针对进程设置不同代理是没有问题的。这也解决了我在附言中的问题。
|
11
rekulas 2020-03-15 12:41:56 +08:00
写过扩展插件,user data 的方式是可行的,只是占用资源多点
如果要实现同浏览器不同标签不同代理,按目前的 api 支持比较难,更可行的方式是中间人作为一级代理做流量分发、结合扩展可以实现,但是也需要开发下貌似没有现成代码 |
12
Myprincess 2020-03-15 13:14:22 +08:00
|
13
imn1 2020-03-15 14:43:19 +08:00
为何不考虑多个浏览器,而是多个 tab ?
|
14
FaiChou OP |
15
ik 2020-03-15 15:11:15 +08:00 via iPhone
补充 #5 每个浏览器都安装 switchyproxy,指定不同浏览器使用不同代理的问题
|
16
rekulas 2020-03-15 15:20:04 +08:00
@FaiChou 例如,用插件给每个 tab 的流量附加一个 tab hash 的 header,中间人通过 header 判断转发不同代理就行了,实际上每一条连接都是可以单独设置代理的,只是 pac 的 api 只能判断 url 不能判断 header,不然都不需要中间人了
|
17
rekulas 2020-03-15 15:23:24 +08:00
如果只通过 url 每个标签 url 后面加特征码判断 不用中间人理论上也是可以的 就是看着感觉有些奇怪 因为多了点东西
|
18
ZXCDFGTYU 2020-03-15 15:31:44 +08:00
网上一大堆卖 IP 代理的,用这个不就行了么
|
19
FaiChou OP @ZXCDFGTYU #18 我只是想探讨下技术方案。
@rekulas #16 谢谢。可以再深入说下吗?「中间人通过 header 判断转发不同代理」这里的转发是怎么实现?用 [AnyProxy]( https://github.com/alibaba/anyproxy) 写个粗糙代码: ```javascript async function* beforeSendRequest({ url, requestData }) { switch (requestData.headers['tabHash']) { case TAB1: { const response = await reverseTo(SERVER1, url, requestData) return { response } } case TAB2: { const response = await reverseTo(SERVER2, url, requestData) return { response } } ... } } ``` 是这个意思吗?还有其他方法吗? |
20
rekulas 2020-03-15 17:43:46 +08:00 1
@FaiChou 是这个意思,这方面暂时也想不到什么更好的办法
其实我觉得 url 的模式更好点,只需要劫持 url 请求就可以实现分流了 例如 tab1 的所有请求 url 都加上 trackcode=a3ef4de 然后 pac 就直接根据 code 分流很简单就实现了 不过也有缺点,可能某些严格匹配的地址会受影响(不过这种网址应该很少可以测测) |
21
yc8332 2020-03-15 18:47:39 +08:00
多开账号简单,360chrome 隐身模式就行了。。。关键是同一个软件设置不同的代理,基本没有办法,要么自己开发一个代理软件的插件。。或者比较简单的是开几个虚拟机,里面再去用浏览器访问,设置不同的代理
|
22
janus77 2020-03-15 18:52:45 +08:00
其实虚拟机就可破
因为你要知道这世界上有一种东西叫做小区宽带,网站开发者是必须考虑这个问题的,所以没必要做到不同 ip |
23
Jirajine 2020-03-15 19:34:55 +08:00 via Android
要求很严格的情况下你同一台设备都会被指纹关联,只能物理隔离。
|
24
460881773 2020-03-16 09:33:56 +08:00
我这边的朋友用的是 windows 的 vps 来搞这个 多个账号就多台机器。ip 肯定是 固定唯一的,
|
25
FS1P7dJz 2020-03-16 12:15:15 +08:00
代理并不能保证你就一定不会被嗅探到真实 IP 地址
|