使用 php 和 curl 在公司代理/防火墙后面进行网页抓取

使用 php 和 curl 在公司代理/防火墙后面进行网页抓取

我位于公司代理/防火墙后面。我想从另一个网站提取信息,并尝试使用 php 和 curl 来实现。

我的脚本如下:

===================== 脚本开始 =================

$url = "www.guptaed.com"; $proxy_ip = "12.34.56.78"; // ip changed from real company proxy $proxy_port = "81"; $proxy_user_pass = "my_user_name:my_password"; // user&pass changed

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 5000); curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP'); curl_setopt($ch, CURLOPT_PROXY, $proxy_ip); curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_user_pass);

$data = curl_exec($ch); curl_close($ch); echo $data;

===================== 脚本结束 =================

当我调用此脚本(通过本地安装的 apache 服务器)时,屏幕上显示以下内容:

===================== 输出开始 =================

成立

该文件已移至此处。

1

===================== 输出结束 =================

上面句子中的“这里”是一个链接,其网址为:“http://www.guptaed.com/proxy.cgi?proxy.pac

任何帮助将不胜感激。

谢谢!Ashish

答案1

目标 URL 返回了 302 HTTP 响应代码,用于将您重定向到另一个 URL。这就是您在使用另一个 URL 时获得“已找到”结果的原因。

尝试配置 curl 以遵循重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

相关内容