0

我想通过其 IP 地址获取网页的内容。还有许多其他网站也共享此 IP,因此使用 HTTP Host 标头。此 PHP Web 服务器没有 DNS 服务,将响应

file_get_contents("http://allaboutcircuits.com");

经过

php_network_getaddresses: getaddrinfo failed: Name or service not known 

从几个例子中,我尝试了:

$context = stream_context_create(array('http' => array('header' => 'Host:allaboutcircuits.com')));
$url = 'http://68.233.243.63';
echo file_get_contents($url, 0, $context);

似乎我在 file_get_contents() 行仍然有同样的错误,这意味着 file_get_contents() 仍然在 DNS 中查询 Host 标头,尽管提供了 IP 地址。

如何修复此代码?

4

2 回答 2

2

问题是网站响应重定向到www.allaboutcircuits.com,所以 PHP 试图遵循重定向。更改您的 Host 标头以包含www.前缀,它应该可以工作。

于 2012-09-15T01:13:35.583 回答
1
$s=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
socket_connect($s,'68.233.243.63',80);
socket_send($s,"GET / HTTP/1.1\r\nHost: www.allaboutcircuits.com\r\n\r\n",1000,0);
socket_recv($s, $buf, 100000,0);
socket_close($s);
echo $buf;

应该是一个开始!

于 2012-09-15T01:13:26.663 回答