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

PHP 反向代理访问任意网站源码来了_Any-Proxy

  •  
  •   yitalin · 297 天前 · 6168 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。
    折腾了一天,有点舍不得,还是发出来造福大家吧。
    搭建好的地址可以共享一下
    顺便取了个名字:Any-Proxy
    源码: https://github.com/yitd/Any-Proxy

    预览页面 https://turl.chat/ (不定时关闭)

    输入 http://www.ip38.com/ 就浏览 ip38.com

    也可以直接 http://turl.chat/http://加域名

    如 : http://turl.chat/http://www.ip38.com/

    你可以直接在当前链接后面输入 *q 退出当前页面返回首页
    可直接在此域名后面加上链接地址访问,如 https://turl.chat/http://ip38.com
    支持 POST 、cookie,不复杂的站点可以登录 测试 dnsdun 可以
    64 条回复    2021-10-08 10:31:16 +08:00
    Tink
        1
    Tink  
       297 天前 via Android
    502
    pems002
        2
    pems002  
       297 天前 via iPhone
    star 了
    hundan
        3
    hundan  
       297 天前 via iPhone
    折腾了一天 有点不舍得 吗...
    freakxx
        4
    freakxx  
       297 天前   ❤️ 2
    。。。。这跟 php 有啥关系,就是做个 nginx 反代而已
    qanniu
        5
    qanniu  
       297 天前
    Google 可以登录吗?
    Ranying
        6
    Ranying  
       297 天前
    纯 php 才有可能在虚拟主机等环境大规模应用。
    个人要用还是在首页加个登录验证比较好。
    ferock
        7
    ferock  
       297 天前 via iPhone
    晚点看看
    terranboy
        8
    terranboy  
       297 天前
    这东西 10 年前就有了吧 还不如 nginx
    yitalin
        9
    yitalin  
    OP
       297 天前
    @terranboy
    张口就来?
    十年前的可不会在搜索引擎下智能联想
    十年前的可不支持 cookie 、post
    Nginx 可不能在 url 后面变地址就改变反代地址
    chinvo
        10
    chinvo  
       297 天前 via iPhone   ❤️ 5
    关键字 www proxy

    确实是十年甚至二十年前就有的东西

    不过确实是单 Nginx 实现不了
    lijialong1313
        11
    lijialong1313  
       297 天前
    我记得有人用 php 做 ngrok……要不 LZ 考虑考虑,搞个完整替换?
    caola
        12
    caola  
       297 天前
    不用说功能上,就拿你的代码来说,就是不严谨的,
    比如:不检查参数就直接用、单双引号不规范使用
    NSAgold
        13
    NSAgold  
       297 天前 via Android
    让我想起了上古时代的 PHPProxy 和 webproxy 类软件
    yitalin
        14
    yitalin  
    OP
       297 天前
    @caola 我不是程序员,这些都是自学的,能用就行。。。
    yitalin
        15
    yitalin  
    OP
       297 天前
    @NSAgold 没错。以前还有用来免流的,现在各种 ssr/v2 这些 这写就变冷门了,但也还是有点用的
    jinliming2
        16
    jinliming2  
       297 天前
    @yitalin #9 还真不是张口就来,十年前我就用类似的东西上 FB 来着,登录肯定是 Post+Cookie 都有的吧
    binux
        17
    binux  
       297 天前 via Android
    想当年 GFW 还没有关键词匹配。。。可见这个技术有多古老
    justyy
        18
    justyy  
       297 天前   ❤️ 1
    lmmortal
        19
    lmmortal  
       297 天前 via iPhone
    挺不错的 支持
    Ptu2sha
        20
    Ptu2sha  
       297 天前   ❤️ 1
    9 楼 十年前是 2011 年啊 人人网都挂了
    Seanfuck
        21
    Seanfuck  
       297 天前 via iPhone
    用 socks 弄更好点
    systemcall
        22
    systemcall  
       297 天前
    以前的梯子就是这个样子,一些网站的样式会乱套
    连 Flash 这种毒瘤都能跑,post cookies 之类的想必是支持的
    那个时候墙的工作原理很简单,一般的也就是 DNS 污染,定期更新 hosts 就可以看油管。那个时候 Google 还可以直接上
    agdhole
        23
    agdhole  
       296 天前   ❤️ 1
    hefish
        24
    hefish  
       296 天前
    我记得 20 年前,我们翻墙就用一个 perl 写的 cgi,架设在台湾的服务器上,首页就是一个输入框,输入地址,然后点击 go,就访问了那个地址。 这个 cgi 还能替换<form 里面的 action,当然那时候没有啥 ajax,所以肯定是不支持 ajax 里的替换的。
    AstroProfundis
        25
    AstroProfundis  
       296 天前
    ladypxy
        26
    ladypxy  
       296 天前 via iPhone
    这玩意确实 10 多年前就有……后来发现 goagent 就换了。还有人记得 goagent 不
    abcd191898105
        27
    abcd191898105  
       296 天前
    如果不配置 https 那就好了,you2 替代可以
    mscb
        28
    mscb  
       296 天前 via Android
    确实是 10 年前流行的东西
    BingoXuan
        29
    BingoXuan  
       296 天前 via Android
    当年很流行的在线代理,大概真的就是十年前
    rekulas
        30
    rekulas  
       296 天前   ❤️ 1
    思路没问题,但是太简陋了,随便一测就出问题,想做完善的可以参考下 glype proxy, 10 年前同事就基于这个框架实现了极其完善的网页代理,不过现在都没什么用了代理方式变了
    yitalin
        31
    yitalin  
    OP
       296 天前
    @abcd191898105 如你所愿。已经可以 http 了
    yitalin
        32
    yitalin  
    OP
       296 天前
    @rekulas 刚测试了。这种太卡了。哪些地方有问题可以告知下。
    Lemeng
        33
    Lemeng  
       296 天前
    给你个 star
    yitalin
        34
    yitalin  
    OP
       296 天前
    @AstroProfundis 这东西到目前都不支持 cookie
    helionzzz
        35
    helionzzz  
       296 天前
    @ladypxy goagent 之前是真好用
    0x0F
        36
    0x0F  
       296 天前   ❤️ 3
    讲道理,什么玩意就十年前写不出来了,就不支持 cookie 不支持 post 的了,合着十年前的程序员都是傻子到你这突然灵光了?我寻思十年前 nginx+php5.3 的流行阶段这样的玩意不知道多少人造过这种轮子了,别说 php 了,啥语言不就是实现个 curl 么,还整的是到目前都不支持 cookie,用 socket 不香实属掩耳盗铃井底观天,我看不到就是没有呗,我没用过就是不行呗?
    我是 13 年注册的 V2EX,偶尔上来看个帖,自学自学来跟人讨论没啥问题,别人说啥自己听有意见说就完了,搞得自己是真多厉害,实在是忍不住了,阿弥陀佛。
    yitalin
        37
    yitalin  
    OP
       296 天前
    @0x0F 真不得了呢?以前有谁不知道似的?你找一个功能跟我这个一样的来?搁这找存在感来了? 13 年注册不得了?还特意说明?笑死 d 了
    yitalin
        38
    yitalin  
    OP
       296 天前
    @0x0F 你先给我找一个 cookie 存需要代理 host 的、链接添加指定字符即清除 cookie 返回首页的反向代理出来再 bb ?我寻思这个思路这么多年也没有人做出来啊。你在这打这么多字来叫显得你有文化?你现在去试试市面上 php 的反代,浏览大一点的网页看看是不是很卡?我寻思十年前有人做手机了,十年后就不能有人做智能手机了?真是有 bing
    KasuganoSoras
        39
    KasuganoSoras  
       296 天前   ❤️ 2
    楼主,想的还是太简单了,你考虑过一个问题么
    如果我访问 https://turl.chat/https://turl.chat/ 会发生什么?
    如果我访问 https://turl.chat/https://turl.chat/https://turl.chat/https://turl.chat/ 又会发生什么?如果我频繁请求会发生什么?

    所以你这只能算个玩具,连基本的请求控制都没有
    你的代码非常多地方都不严谨,变量类型没有任何判断,肉眼能看到的问题就好几处。
    还有,如果这玩意搭在能访问内网的机器上,我是不是还能通过 https://turl.chat/http://192.168.1.1/ 这样的方式去扫你的内网?如果内网机器有弱密码情况,分分钟整台服务器就给拿下了,真不是开玩笑
    所以 LZ 还是虚心一点吧,不要刚学会点入门级 PHP 就这么飘了,戾气别这么重,多学点不是什么坏事
    yitalin
        40
    yitalin  
    OP
       296 天前 via iPhone
    @KasuganoSoras 你说的第一种情况不会发生,有判断,第二个问题但是值得考虑,学习了
    blless
        41
    blless  
       296 天前 via Android
    中间人嘛,说得好听是代理。说得难听那就是中间人了。不是针对楼主啊,网上发的链接大家还是留个心眼不要点,尤其还登陆点啥来着
    bao3
        42
    bao3  
       296 天前 via iPhone
    突然,就觉得自己是互联网老毒物了……2009 年,还自己搭建过 php proxy,上各种网站……一晃好久了。
    baoshuo
        43
    baoshuo  
       296 天前
    楼主的代码我觉得还只能算是娱乐性质的,真要在生产环境用分分钟炸掉

    虽然我的 PHP 水平没有那么好,但是也能看出来一些错误,比如楼上(#39 )所说的扫内网,还有代码里单双引号的不正确使用,等等

    然后我看了看楼主的仓库,第一眼让我看见的就是 `Add files via upload` 。这要么说明楼主比较懒,要么说明楼主不会 Git



    然后各个 Commit 的标题让我成功相信了楼主不会用 Git,即使会用也应该处于刚入门的阶段

    如果楼主是刚入门的话,我觉得应该去学一些有变量类型的语言(比如 C++),这样对以后的习惯养成有很大帮助
    systemcall
        44
    systemcall  
       296 天前 via Android
    @ladypxy #26
    Google 中国的那些服务器停了就没法用了。以前 Google 中国的那些服务器还是开的的时候,可以白嫖 Google 的国际专线,北京-美国的专线
    markgor
        45
    markgor  
       296 天前
    要不考虑下替换插入下<base>标签?
    yitalin
        46
    yitalin  
    OP
       296 天前 via iPhone
    @baoshuo 不会啊,我不会写代码,所有问题都是百度的,代码都是复制粘贴拼接的
    yitalin
        47
    yitalin  
    OP
       296 天前 via iPhone
    @markgor 为什么需要这个呢?不是没必要了吗?
    nalzok
        48
    nalzok  
       296 天前   ❤️ 1
    @KasuganoSoras 其实我觉得问题不是楼主不虚心,你看八楼说的 “这东西 10 年前就有了吧 还不如 nginx”。从这句话里我没看出有什么有建设性的意见(哪个十年前的仓库值得楼主学习呢? NGINX 相比楼主的项目又有什么优越性呢?),完全就是在 bully 罢了。楼主写的东西再粗糙,他也是想和大家分享自己的作品,结果这么多人都在说 “你写的就是个没用的垃圾”,换作谁会高兴啊。我觉得你的评论就很好,人家的代码有什么问题直接提出就行了,讲那些没用的干嘛 = =
    markgor
        49
    markgor  
       295 天前
    @yitalin
    请忽略我,找到问题了,源站资源存在防盗链的就 GG 了,一开始以为是相对路径的原因
    Tining
        50
    Tining  
       295 天前
    本来想部署一下。。感觉要不等大佬更新
    yitalin
        51
    yitalin  
    OP
       295 天前 via iPhone
    @Tining 更新得差不多了,搭吧,有建议可以回复
    KasuganoSoras
        52
    KasuganoSoras  
       295 天前
    看到你今天更新了,顺带回一下
    https://github.com/yitd/Any-Proxy/blob/main/index.php#L53
    虽然你做了对内网的判断,判断 host 是否是内网地址,但是,你没有对 host 进行解析操作,也就是说,如果我随便找个域名解析到 192.168.1.1 这样的地址去,还是可以继续扫内网。

    另外
    https://github.com/yitd/Any-Proxy/blob/main/index.php#L3
    不应该去判断是否有 X-Forward-For Header,因为可以随意伪造,只要我每次伪造随机的 Header,就可以无限刷,无视掉你这一部分的判断,并且因为你这一部分还会把请求的 IP 写入 Redis,所以我甚至还可以通过给 Header 塞超长的数据 + 大量请求塞爆 Redis,让主机内存爆满。

    继续改进吧
    KasuganoSoras
        53
    KasuganoSoras  
       295 天前
    当你试着去解决了域名解析,Header 伪造这些问题后,你就会发现,其实你写的东西和你所说市面上那些慢的要死、浏览网页一卡一卡的代理软件的速度差不到哪去。之所以那些软件速度不快,是因为人家的软件在设计的时候就考虑到了加密、安全以及各种各样的问题,而不是单纯的就做个转发。因为没人愿意把一套不安全的软件部署在自己的生产服务器上。
    yitalin
        54
    yitalin  
    OP
       294 天前 via Android
    @KasuganoSoras 那是我测试站点用的判断代码,忘了删除。域名解析速度的影响可以忽略不计吧,另外 X-Forward-For Header 是针对 cdn 的,加了 cdn 只有这个才能拿到客户端 IP
    yitalin
        55
    yitalin  
    OP
       294 天前 via Android
    @KasuganoSoras 感谢指点。
    ywisax
        56
    ywisax  
       294 天前   ❤️ 1
    差不多十年前,我有个朋友就是做这种项目的,wap 浏览器,wml to html 部分还是我写的。。。
    挺好玩的,深入搞这个项目对于 HTTP 的细节了解程度应该会提升很大。
    aoerboquartz
        57
    aoerboquartz  
       294 天前
    楼主做的挺好的,楼主自己都说了,他是自学,不是科班出身,语言符号不规范等等都是正常的,大家就不要嘲讽。楼主 继续完善好代码。
    whoami9894
        58
    whoami9894  
       294 天前
    @yitalin #38
    态度还挺冲,逗笑我了
    KasuganoSoras
        59
    KasuganoSoras  
       294 天前
    今天下午没事干,重新整理了一遍你的代码,把发现的几个问题都修复了,另外规范了一下命名,已经给你提 PR 了,有空去看看吧
    gtchan13579
        60
    gtchan13579  
       294 天前
    无法访问域名+端口号的,感觉用处不大
    q1angch0u
        61
    q1angch0u  
       293 天前
    yitalin
        62
    yitalin  
    OP
       293 天前 via Android
    @q1angch0u 这方面不太了解,有办法解决吗
    huobazi
        63
    huobazi  
       291 天前
    十五六年前,全胜同学拿 1bu.com 这个玉米玩了一次超级反代,强奸了 google baidu 数以万万计的收录,反代出的江湖啊、论坛啊也是可以登陆发帖的。
    t6attack
        64
    t6attack  
       62 天前
    搜索时索引到了这个帖子,该说的楼上都已经说了。
    目前最先进的在线代理技术是 jsproxy,同样出自 v 友之手。楼上已经有人提到了。
    原帖: https://www.v2ex.com/t/551536
    项目地址: https://github.com/EtherDream/jsproxy
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3049 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    ♥ Do have faith in what you're doing.