同一设备同时登陆多个账号,如何使其 ip 地址不同(防关联)?

2020-03-14 23:07:11 +08:00
 FaiChou

标题可能有点绕,场景如下:Amazon 限制用户(卖家)注册多个账号,会根据 ip 等信息来区分用户。

所以如果有几个账号,想要实现它们同时在线不被关联,应该如何实现?

在线指的是,在浏览器登陆亚马逊网站。

看到有一种叫「超级浏览器」的东西,做外贸的公司一般会花钱去购买。所以它的原理是什么?

如果让我实现:

假如有 5 个账号需要同时在线,需要至少 4 个稳定的其他网络做代理,并且同一台设备需要开启 4 个 server 来连接代理,浏览器还要对每个页面设置不同 local server 代理。SwitchyOmega 好像不能自动为每个 tab 设置不同代理,只有根据规则选用不同代理的功能,所以需要开启 5 个不同浏览器来代理。这样实现起来太麻烦了,所以有什么更好的实现方法吗?

5560 次点击
所在节点    程序员
25 条回复
PbCopy111
2020-03-15 00:28:55 +08:00
5 张手机卡。
rexxtem07
2020-03-15 00:32:39 +08:00
5 台 windows 云虚拟机
vincentxue
2020-03-15 00:35:49 +08:00
开几个 Tor 浏览器选不同的 region ?
NeinChn
2020-03-15 00:43:26 +08:00
多代理还是比较好做的吧,对着现有的 proxy 插件改一下就好了,难度应该不大
不过同网站多 Cookie 支持这个就没那么简单了,得从浏览器层面去 hack
我搜了一下,类似的产品都是直接从 Chromium 改的....例如 Ghost Browser
https://sspai.com/post/40750
janxin
2020-03-15 08:44:50 +08:00
Chrome/Firefox 就有这种功能

Chrome 有定义多 user data 功能,使用参数--user-data-dir 即可,创建多个指向不同位置的 user-data 的快捷方式

Firefox 有官方的 Firefox Multi-Account Containers,不过代理分离稍微麻烦点而已
FaiChou
2020-03-15 11:39:08 +08:00
@janxin #5

可以解决多个浏览器的问题,但 ip 问题还没解决
janxin
2020-03-15 11:47:16 +08:00
@janxin 不同 user data 数据不通,都装上插件设置不同代理就可以了
FaiChou
2020-03-15 11:48:56 +08:00
@NeinChn #4 看了下,GhostBrowser 基本就是应付此场景而生的,谢谢。换了个关键词,我也搜到了。

FaiChou
2020-03-15 11:51:51 +08:00
@janxin #7 哦哦,就像 4L 中提到的 GhostBrowser 一样,不同 session 的 tab 使用不同的 container,所以也支持单独为 session 设置不同代理吗?
FaiChou
2020-03-15 11:54:07 +08:00
@janxin 这种 --user-data-dir 形式是相当于另开启一个浏览器进程,所以针对进程设置不同代理是没有问题的。这也解决了我在附言中的问题。
rekulas
2020-03-15 12:41:56 +08:00
写过扩展插件,user data 的方式是可行的,只是占用资源多点
如果要实现同浏览器不同标签不同代理,按目前的 api 支持比较难,更可行的方式是中间人作为一级代理做流量分发、结合扩展可以实现,但是也需要开发下貌似没有现成代码
Myprincess
2020-03-15 13:14:22 +08:00
看一下这个文章 :
https://mp.weixin.qq.com/s/tjdcraEgiGbnDs2ptrhyNA
AMAZON 查关联
imn1
2020-03-15 14:43:19 +08:00
为何不考虑多个浏览器,而是多个 tab ?
FaiChou
2020-03-15 14:51:49 +08:00
@imn1 #13 嗯,你说的有道理,浏览器对应的是 process,tab 对应的是 thread. 只是在探讨有没有可能给同一 process 下的 threads 分配不同代理。


@rekulas #11 比较难的是需要提取关键信息来区分不同账号来自动分配代理。但是中间人一级代理只能单独转发吧?就拿 mitmproxy 来说,如何将流量转发给其他的代理?
ik
2020-03-15 15:11:15 +08:00
补充 #5 每个浏览器都安装 switchyproxy,指定不同浏览器使用不同代理的问题
rekulas
2020-03-15 15:20:04 +08:00
@FaiChou 例如,用插件给每个 tab 的流量附加一个 tab hash 的 header,中间人通过 header 判断转发不同代理就行了,实际上每一条连接都是可以单独设置代理的,只是 pac 的 api 只能判断 url 不能判断 header,不然都不需要中间人了
rekulas
2020-03-15 15:23:24 +08:00
如果只通过 url 每个标签 url 后面加特征码判断 不用中间人理论上也是可以的 就是看着感觉有些奇怪 因为多了点东西
ZXCDFGTYU
2020-03-15 15:31:44 +08:00
网上一大堆卖 IP 代理的,用这个不就行了么
FaiChou
2020-03-15 17:34:25 +08:00
@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 }
}
...
}
}
```

是这个意思吗?还有其他方法吗?
rekulas
2020-03-15 17:43:46 +08:00
@FaiChou 是这个意思,这方面暂时也想不到什么更好的办法
其实我觉得 url 的模式更好点,只需要劫持 url 请求就可以实现分流了
例如 tab1 的所有请求 url 都加上 trackcode=a3ef4de
然后 pac 就直接根据 code 分流很简单就实现了

不过也有缺点,可能某些严格匹配的地址会受影响(不过这种网址应该很少可以测测)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX