2016-04-03 17 views
1

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

现在,如果我想使用客户端的代理来连接到服务器,我怎么能在PHP中做到这一点?

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

请指教。

回答

0

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

感觉就像PHP应该有一些建在已经

我竭力想象,为什么它应该。 PHP是一种为服务器端Web开发设计的语言。代理是客户端技术。说了curl扩展对HTTP代理的全面支持。

没有单一的代理协议。当然,SOCKS和HTTP是代理最明显的协议,但还有很多。是否有选择SOCKS的具体原因?

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

+0

1)由于PHP具有socket_ *函数,因此感觉PHP核心开发人员会考虑代理支持,并且不会将其忽略掉,除非他们有足够的理由这样做。 2)SOCKS代理,因为我在这里使用流(我不是吗?)3)基于iptables或服务器将无法工作,因为客户端不是固定到一台服务器,它必须是基于应用程序的。 任何你可以指向我的更多的研究或解决方案或直接的代码示例? – Ashfame

+0

我正在努力将意义与您的回应联系起来。关于1)由于PHP支持套接字,因此您可以在PHP代码中实现额外的网络抽象,如您所引用的产品所示,而不是PHP代码所示。 2)如果你的意思是说你没有使用标准协议,如HTTP或SMTP ....那么,是的,这不包括协议特定的代理,但不是所有其他重新路由流量的方式。我不知道你的意思3 – symcbean

+0

1)我只是很难理解需要使用外部库来支持代理,而curl具有内置的代理支持,但我想没关系,如果这是唯一的路线。 2)SOCKS代理可以与任何协议一起工作,所以计算出它可以和我的用例一起工作3)这个代码必须打包和分发,因此代理支持必须在应用程序本身中构建 – Ashfame