【问题标题】:Using proxy with sockets in PHP在 PHP 中使用带套接字的代理
【发布时间】:2016-04-03 15:30:05
【问题描述】:

我有一些 PHP 代码,其中使用套接字在服务器和客户端之间传递 XML 数据。 socket_create( AF_INET, SOCK_STREAM, SOL_TCP )socket_read()socket_write() 是用于传递 XML 而不是 HTTP 请求的函数。

现在,如果我想为客户端使用代理连接到服务器,我该如何在 PHP 中做到这一点?

我是套接字的新手,从我收集的信息来看,存在这个库 https://github.com/clue/php-socks,我现在还不完全理解,但我的想法是使用相同的库来设置中间人,它本质上是这里的代理案子。我将如何使用从https://www.socks-proxy.net/ 或付费代理获得的 SOCKS4/5 代理?上面提到的库是唯一的选择吗?感觉 PHP 应该已经内置了一些东西。

请指教。

【问题讨论】:

    标签: php sockets proxy


    【解决方案1】:

    这应该是评论,但是有点长。

    感觉 PHP 应该已经内置了一些东西

    我很难想象为什么会这样。 PHP 是一种为服务器端 Web 开发而设计的语言。代理是一种客户端技术。话虽如此,curl 扩展对 HTTP 代理有全面的支持。

    没有单一的代理协议。当然 SOCKS 和 HTTP 是最常见的代理协议,但还有更多。选择 SOCKS 是否有特定原因?

    如果是我,我会使用 iptables (Linux) 或 socat 实例或 haproxy(Unix、MSWindows)设置透明端口转发。

    【讨论】:

    • 1) 由于 PHP 具有 socket_* 函数,感觉就像 PHP 核心开发人员会考虑代理支持并且不会将其排除在外,除非他们有充分的理由这样做。 2) SOCKS 代理,因为我在这里使用流(不是吗?) 3) iptables 或基于服务器的将不起作用,因为客户端不只固定在一台服务器上,它必须是基于应用程序的。您有什么可以指点我进行更多研究或解决方案或简单的代码示例的吗?
    • 我很难将意义与您的回复联系起来。关于 1)由于 PHP 支持套接字,因此可以在 PHP 代码中实现额外的网络抽象,如您引用的产品所示,而不是在 PHP 代码中。 2) 如果您的意思是您没有使用标准协议,例如 HTTP 或 SMTP....那么,是的,不包括特定于协议的代理,但不包括所有其他重新路由流量的方式。我不知道你说的 3 是什么意思
    • 1) 我只是很难理解需要使用外部库来支持代理,而 curl 内置了代理支持,但我想如果这是唯一的路线,那没关系。 2) SOCKS 代理适用于任何协议,因此认为它适用于我的用例 3) 此代码必须打包和分发,因此必须在应用程序本身中构建代理支持
    • 使用透明代理。
    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 2017-10-09
    • 2015-09-23
    • 2013-06-03
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多