我正在使用此代码来获取HTTP响应:
$url = "http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;
效果很好,但我需要隐藏推荐人,所以我使用http://href.li/就像这样:
$url = "http://href.li/?http://example.com/";
$headers = get_headers($url);
$header = substr($headers[0], 9, 3);
echo = $header;
无论最终页面的状态如何,都会生成200 OK
HTTP状态代码。是否有可能从最后一页获得标题?或者还有另一种方法可以在使用引用隐藏服务的同时完成此操作吗?
答案 0 :(得分:1)
您不需要第三方服务来隐藏此类请求中的引用者,您可以将其设置为您需要的任何内容,但是,您无法使用get_headers
函数执行此操作。您可以使用file_get_contents
和stream_context_create
来完成此操作。在你的情况下,我想它会是这样的:
$URL = 'http://example.com/';
$Context = stream_context_create(array(
'http' => array(
'method' => 'HEAD',
'header' => 'Referer: '
)
));
file_get_contents($URL, false, $Context);
$ResponseHeaders = $http_response_header;
$header = substr($ResponseHeaders[0], 9, 3);
echo $header;
stream_context_create
使用您指定的请求的任何选项创建流上下文,file_get_contents
使用该上下文执行请求。然后脚本检查$http_response_header
这是一种魔术变量,它在HTTP请求HTTP URL之后填充,并且只在本地范围内可用,即,在您调用函数发出HTTP请求之后,但不是比如,在之后执行的另一个函数中。 $http_response_header
的内容与get_header()
函数的结果基本相同。
(您也可以在上面的示例中使用GET
,但如果您不需要响应正文,HEAD
只会获取没有正文的标题。顺便说一句,PHP {{1} }发出一个get_headers
请求获取整个响应,包括然后被丢弃的主体。但有时接收服务器或脚本无法处理GET
请求或执行某些操作与HEAD
不同请求 - 您应该尝试一下,看看它对您有用。)