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

关于代理的一些理解,请大家帮我看下对不对

  •  
  •   yezheyu · 2023-03-27 17:46:55 +08:00 · 2317 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前对代理一直半懂不懂,对于如何设置代理软件,一直玩不太明白

    今天看了些文档,感觉代理的主要功能就是消息转发。

    我按照个人的理解画了个图,大家帮我看看,我的理解有偏差吗?

    10 条回复    2023-03-28 21:24:43 +08:00
    kop1989smurf
        1
    kop1989smurf  
       2023-03-27 17:49:25 +08:00   ❤️ 1
    中间还差了一个拦截的过程。

    严格意义上讲,开了代理软件以后,所有的 http 请求都会走代理,只不过有的被分配到 direct ,有的被分配到走节点( PAC/规则模式)。
    kop1989smurf
        2
    kop1989smurf  
       2023-03-27 17:50:04 +08:00
    勘误:“开了代理软件以后” => “打开了代理软件的系统代理模式以后”
    cnuser002
        3
    cnuser002  
       2023-03-27 18:12:57 +08:00
    没毛病啊。
    NoOneNoBody
        4
    NoOneNoBody  
       2023-03-27 18:57:30 +08:00   ❤️ 1
    没太大毛病
    如果只是“玩”(用),也没必要理解得太透彻,搞清每个步骤的进|出协议就够了,中间怎么换就交给软件完成

    就如穿几件衣服,不穿别人能直接看到皮肉,穿哪一件在最外面,看到的就是那件的样子
    这几件衣服码号是相同或相近的,因为你的身体尺寸摆在那,但具体每一件,拿尺子量还是不同的,因为外套总要考虑里面有其他衣服的厚度

    如果几个工具,一个端口接另一个,就是串联,如果没有接起来,就是并联或者独立
    你可以在 socket 和 browser 之间再加一个,做其他工作,例如拦截某些域名不发送或者不接收,当防火墙用也行
    leafin
        5
    leafin  
       2023-03-27 19:06:42 +08:00   ❤️ 1
    socks5 协议是浏览器到代理客户端的协议,客户端到服务器的协议是各种自定义的代理协议
    josephxrays
        6
    josephxrays  
       2023-03-28 01:02:11 +08:00 via Android   ❤️ 1
    一般来说 socks5 客户端和服务端均在本地实现,因为 socks5 是明文传输的。
    以 shadowsock 为例,一般分为 ss-local 和 ss-server ,具体的请求流程是:本地浏览器 /用户程序 -> 本地 ss-local(实现 socks 服务器,监听来自 socks 客户端的请求,当然也可以监听 http 请求) --(走 shadowsock 协议)--> ss-server -> 目标服务器(比如 Google )
    sillydaddy
        7
    sillydaddy  
       2023-03-28 09:39:46 +08:00
    对,就是转发。如果关注隐私的话,还要稍微深入了解一下,比如如果 proxy server 被黑客登录了,那么黑客能不能拿到你的访问记录,或者换个说法,如果你用了别人的机场,他能否看到你的浏览记录。
    Hccake
        8
    Hccake  
       2023-03-28 17:01:59 +08:00
    1. 本机的代理工具,以下简称 client, 一般同时支持 http 代理和 socks5 代理,所以浏览器到 client 之间可以是 http 协议也可以是 socks5 协议,取决于你的配置。

    2. client 和 proxy server 之间可以使用各种自定义协议,如 ss 、trojan 等,几乎不会使用 socks5 ,因为 socks5 是明文协议,特征明显,分分钟被 ban.

    全流程就是:浏览器将流量发送到 proxy client ,client 接收流量后根据对应的代理协议对原始流量进行包装,并转发到 proxy server, proxy server 接收到数据后再其解包获得原始流量,转发到最终目标地址。
    yezheyu
        9
    yezheyu  
    OP
       2023-03-28 19:52:56 +08:00
    @Hccake @kop1989smurf @NoOneNoBody @josephxrays @sillydaddy 首先谢谢大家!

    所以,如果浏览器到 proxy client 之间如果使用的 socks5 ,是谁把原本用户使用浏览器发出的 http 请求转换成 socks5 呢?

    是 switchyomega 这个插件吗?那这个 switchyomega 实际上也是扮演着一个微型的代理角色是吗?

    而在代理软件上,一般我们也可以进行流量的访问控制,所以我们可以把 PAC 写在 switchyomega ,也可以写在 shadowsocks 上对吗?


    游戏加速器也是类似这种架构吗?

    加速器软件代理游戏发出的 UDP 请求,通过自己的专线发给国外的代理服务器,再交给游戏服务器。收到数据后再原路返回
    Hccake
        10
    Hccake  
       2023-03-28 21:24:43 +08:00
    switchyomega 插件应该只是管理浏览器的代理行为,控制浏览器要不要走代理,走哪个代理,具体的流量请求行为应该是 chrome 内核处理的,所以浏览器才是所谓的 socks5 client 。

    proxy client 是个中转服务,肩负多重角色,对于浏览器来说,它是 socks5 server, 对于代理服务器来说,它是代理客户端。

    switchyomega 和 proxy client 都可以实现流量的转发控制。

    游戏加速器基本流量转发流程一致,主要是多了一个针对指定游戏的流量处理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1719 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:41 · PVG 00:41 · LAX 09:41 · JFK 12:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.