V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FaiChou
V2EX  ›  程序员

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

  •  
  •   FaiChou ·
    FaiChou · 2020-03-14 23:07:11 +08:00 · 5743 次点击
    这是一个创建于 1719 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    如果让我实现:

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

    第 1 条附言  ·  2020-03-15 11:42:50 +08:00
    总结下需要实现的场景:
    如何给某应用(浏览器)的多个线程设置不同代理。
    25 条回复    2020-03-16 12:15:15 +08:00
    PbCopy111
        1
    PbCopy111  
       2020-03-15 00:28:55 +08:00
    5 张手机卡。
    rexxtem07
        2
    rexxtem07  
       2020-03-15 00:32:39 +08:00 via iPhone
    5 台 windows 云虚拟机
    vincentxue
        3
    vincentxue  
       2020-03-15 00:35:49 +08:00
    开几个 Tor 浏览器选不同的 region ?
    NeinChn
        4
    NeinChn  
       2020-03-15 00:43:26 +08:00   ❤️ 1
    多代理还是比较好做的吧,对着现有的 proxy 插件改一下就好了,难度应该不大
    不过同网站多 Cookie 支持这个就没那么简单了,得从浏览器层面去 hack
    我搜了一下,类似的产品都是直接从 Chromium 改的....例如 Ghost Browser
    https://sspai.com/post/40750
    janxin
        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,不过代理分离稍微麻烦点而已
    FaiChou
        6
    FaiChou  
    OP
       2020-03-15 11:39:08 +08:00
    @janxin #5

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

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


    @rekulas #11 比较难的是需要提取关键信息来区分不同账号来自动分配代理。但是中间人一级代理只能单独转发吧?就拿 mitmproxy 来说,如何将流量转发给其他的代理?
    ik
        15
    ik  
       2020-03-15 15:11:15 +08:00 via iPhone
    补充 #5 每个浏览器都安装 switchyproxy,指定不同浏览器使用不同代理的问题
    rekulas
        16
    rekulas  
       2020-03-15 15:20:04 +08:00
    @FaiChou 例如,用插件给每个 tab 的流量附加一个 tab hash 的 header,中间人通过 header 判断转发不同代理就行了,实际上每一条连接都是可以单独设置代理的,只是 pac 的 api 只能判断 url 不能判断 header,不然都不需要中间人了
    rekulas
        17
    rekulas  
       2020-03-15 15:23:24 +08:00
    如果只通过 url 每个标签 url 后面加特征码判断 不用中间人理论上也是可以的 就是看着感觉有些奇怪 因为多了点东西
    ZXCDFGTYU
        18
    ZXCDFGTYU  
       2020-03-15 15:31:44 +08:00
    网上一大堆卖 IP 代理的,用这个不就行了么
    FaiChou
        19
    FaiChou  
    OP
       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
        20
    rekulas  
       2020-03-15 17:43:46 +08:00   ❤️ 1
    @FaiChou 是这个意思,这方面暂时也想不到什么更好的办法
    其实我觉得 url 的模式更好点,只需要劫持 url 请求就可以实现分流了
    例如 tab1 的所有请求 url 都加上 trackcode=a3ef4de
    然后 pac 就直接根据 code 分流很简单就实现了

    不过也有缺点,可能某些严格匹配的地址会受影响(不过这种网址应该很少可以测测)
    yc8332
        21
    yc8332  
       2020-03-15 18:47:39 +08:00
    多开账号简单,360chrome 隐身模式就行了。。。关键是同一个软件设置不同的代理,基本没有办法,要么自己开发一个代理软件的插件。。或者比较简单的是开几个虚拟机,里面再去用浏览器访问,设置不同的代理
    janus77
        22
    janus77  
       2020-03-15 18:52:45 +08:00
    其实虚拟机就可破
    因为你要知道这世界上有一种东西叫做小区宽带,网站开发者是必须考虑这个问题的,所以没必要做到不同 ip
    Jirajine
        23
    Jirajine  
       2020-03-15 19:34:55 +08:00 via Android
    要求很严格的情况下你同一台设备都会被指纹关联,只能物理隔离。
    460881773
        24
    460881773  
       2020-03-16 09:33:56 +08:00
    我这边的朋友用的是 windows 的 vps 来搞这个 多个账号就多台机器。ip 肯定是 固定唯一的,
    FS1P7dJz
        25
    FS1P7dJz  
       2020-03-16 12:15:15 +08:00
    代理并不能保证你就一定不会被嗅探到真实 IP 地址
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:04 · PVG 07:04 · LAX 15:04 · JFK 18:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.