是否可以使用 file_get_contents() 或 cURL 进行代理?

Posted

技术标签:

【中文标题】是否可以使用 file_get_contents() 或 cURL 进行代理?【英文标题】:is it possible to make a proxy with file_get_contents() or cURL? 【发布时间】:2012-02-19 12:00:47 【问题描述】:

我刚刚在学校玩了file_get_contents(),并注意到它允许我打开学校里被列入黑名单的网站。

只有几个问题:

没有图片加载

点击网站上的链接只会让我回到原来被阻止的页面。

我想我知道解决链接问题的方法,但还没有真正考虑过.. 我可以对来自file_get_contents 的内容执行str_replace 来替换该链接上的任何链接,并使用另一个file_gets_contents() 函数...对吗?

如果我改用 cURL 会更容易吗?

我正在尝试做的事情,甚至可能,还是我只是在浪费我的宝贵时间?

我知道这不是处理此类事情的好方法,但是,这只是一个想法,这让我很好奇。

【问题讨论】:

+1 用于测试和观察事物 :-) 这表明你很感兴趣。 【参考方案1】:

您的“问题”来自于 HTTP 是 stateless protocol 并且不同的资源(如 css、js、图像等)有自己的 URL,因此您需要为每个资源创建一个请求。如果你想自己做,而不是使用 php-proxy 或类似的,这是“非常简单的”:你必须清理 html 并将其用tidy 标准化为xml(xhtml),然后用@处理它987654324@和XPath。

你可以从中学到很多东西——它并不过分复杂,但它涉及到一些有趣的“技术”。

您最终会得到所谓的抓取工具屏幕抓取工具

【讨论】:

【参考方案2】:

这不是一项简单的任务。这是可能的,但您需要解析返回的文档并替换所有引用外部内容的内容,以便它们也通过您的代理进行中继,这是困难的部分。

请记住,您需要能够处理(首先,这不是一个完整的列表):

可能会或可能不会获取外部内容的相对路径和绝对路径 锚点、表单、图像和任何数量的其他 HTML 元素可以引用外部内容,并且可能会或可能不会明确指定它们引用的内容。 引用外部内容的 CSS 和 JS 代码,包括修改 DOM 以使用充当链接的 click 事件创建元素的 JS,仅举一个挑战。

这是一项相当艰巨的任务。就个人而言,我建议您不要打扰 - 您可能正在浪费您的宝贵时间。

特别是因为一些好人已经为你完成了大部分工作:

http://sourceforge.net/projects/php-proxy/ http://sourceforge.net/projects/knproxy/

;-)

【讨论】:

以上是关于是否可以使用 file_get_contents() 或 cURL 进行代理?的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents() 是不是有超时设置?

PHP将'file_get_contents'分解为数组

为啥 file_get_contents 不起作用?

如何使用 file_get_contents 或 file_get_html?

使用 ajax 时使用 php file_get_contents() 不起作用

等效于 Node.JS 的 file_get_contents()