V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ClericPy
V2EX  ›  问与答

求一个能做二级代理转发的工具, 因为 Chrome 命令行挂不上带认证的代理

  •  
  •   ClericPy · 2020-10-12 22:58:52 +08:00 · 1716 次点击
    这是一个创建于 1510 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景:
    公司里在用的代理是带 auth 信息的 user:pwd@host:port 的, 但是 Chrome 命令行启动的时候不支持带认证的代理, 所以只能先转发到一个本地免密代理再进行请求.

    目前已经进行的尝试:
    1. 通过 --proxy-server=http://host:port 直接挂那个需要认证的代理, 浏览器里会暗处认证框, 但是 Chrome CDP 里面的 Fetch.enable(authChallengeResponse=true) + Fetch.continueWithAuth 发现根本截取不到前面的那个认证 Fetch.authRequired, 只能截取到普通的 Fetch.requestPaused 事件

    2. 通过 Network.setExtraHTTPHeaders 强制写入 Proxy-Authorization, 直接报错完全没用

    3. 目前唯一成功的就是通过 cow 做二级代理, 但是看过 issue 作者 2014 年表示不希望实现一个端口转发一个代理的功能 ( https://github.com/cyfdecyf/cow/issues/162), 所以一个 cow 进程只能做一个 port + 二级代理的绑定, 如果绑定多个, 就不能一对一了.

    4. 回头看了下 mitmproxy 里的 connection 监听转发, 并不适合我想做的

    5. 试着命令行挂 export http_proxy 的方式代理, Chrome 启动也要填登录框

    总结: 求一个可以帮我把带认证的代理转为免认证的 host+port 代理的方式. 目前想到的就是每次挂代理之前启动一个自定义 rc 路径的 cow 进程.

    有其他选择吗, 最好 Python3 以上的, 就省的启动进程了
    12 条回复    2020-10-14 21:58:47 +08:00
    yaoliyc
        1
    yaoliyc  
       2020-10-12 23:03:19 +08:00 via iPhone   ❤️ 1
    Proxifier
    ClericPy
        2
    ClericPy  
    OP
       2020-10-12 23:07:13 +08:00
    @yaoliyc 感谢回复... 看了下 windows + mac 的, 想部署在 Linux 服务器...

    现在在看 squid
    KyonLi
        3
    KyonLi  
       2020-10-12 23:36:31 +08:00 via iPhone   ❤️ 1
    v2ray
    ClericPy
        4
    ClericPy  
    OP
       2020-10-13 00:04:14 +08:00
    @KyonLi 没找到可以让我把多个 (大概 100 左右) 原本在用的需要认证的代理转二级代理的多端口方式...
    xmh51
        5
    xmh51  
       2020-10-13 00:09:06 +08:00   ❤️ 1
    gost
    ysmood
        6
    ysmood  
       2020-10-13 00:31:39 +08:00   ❤️ 1
    ClericPy
        7
    ClericPy  
    OP
       2020-10-13 00:55:13 +08:00
    @xmh51 目前来看, 比 cow 舒服的一点就是命令行参数里就可以写转发代理, 不用像 cow 一个个拼 rc 文件... 非常感谢! 这样子多开几个进程也可以接受, golang 真舒服


    @ysmood 感谢, 我搜了到处都说不行, 这里的 HandleAuth 其实就是 Fetch.enable 里面的 paused := &proto.FetchRequestPaused{}; auth := &proto.FetchAuthRequired{}. 我在测试的时候发现只能收到前者的事件, 后者拿不到, 我再看看这个代码. 非常感谢!

    PS: golang 在 Github 上居然也可以函数跳转, 真方便
    ysmood
        8
    ysmood  
       2020-10-13 01:11:45 +08:00
    @ClericPy github 这个预览确实很强,不过目前只是搜索关键词,还没支持 type-safe 的跳转
    KyonLi
        9
    KyonLi  
       2020-10-13 08:40:12 +08:00
    @ClericPy 100 个 inbound+100 个 outbound+routing 就行了啊
    ClericPy
        10
    ClericPy  
    OP
       2020-10-13 22:29:34 +08:00
    @KyonLi 有 Python 实现么, 这方面没做过, 关键词都没听懂
    muzuiget
        11
    muzuiget  
       2020-10-14 01:12:57 +08:00
    没看懂你第 1 点那个 Chrome CDP 问题。
    ClericPy
        12
    ClericPy  
    OP
       2020-10-14 21:58:47 +08:00
    @muzuiget
    开启 fetch 以后抓包拿到 continueWithAuth 事件, 结果我拿不到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2551 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:07 · PVG 13:07 · LAX 21:07 · JFK 00:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.