PHP代理 - 基本说明

问题描述:

PHP代理如何工作?PHP代理 - 基本说明

我希望做一个小脚本,它类似于其他PHP代理

但它是如何实际工作?

我在想一个PHP代理,用来绕过AJAX Sane Origin Policy。如果你需要一个真正的HTTP代理,这个过程要复杂得多。

最简单的伪代码:

  • 从请求获取URL(例如,从$_POST['url']
  • 拒绝无效的网址(例如,不要发出请求到localhost(或你的私人子网内,如果你有几台服务器))
  • (可选)检查脚本的缓存,返回缓存的响应(如果适用)
  • 向目标URL发出请求,例如与卷曲
  • (可选)缓存响应,如果适用
  • 返回响应

注:在这个最简单的形式,您允许任何人访问通过你的PHP代理在互联网上的任何URL;应实施一些访问控制(例如,仅限登录用户,具体取决于您使用的代理服务器)。

这是比你想象的更多的工作。只需调用一个远程网页并显示其内容是不够的(在最简单的情况下这将是readfile('http://google.com')),您必须重写html文档中的url以再次指向您自己的代理,您需要能够处理https (或者如果目标页面需要HTTPS,则允许对敏感数据的正常访问)以及许多其他(部分已在RFC 3143中编译)。

也许apache的mod_proxy有你所需要的,但如果你真的想自己写一个,研究其他项目的源代码(如php-proxy)可能会让你更深入的了解这个问题。