是否可以使用 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 或 file_get_html?