PHP-php curl或者file_get_content 获取非80端口远程内容
这种情况是什么问题?
本地环境和虚拟主机空间环境,相同代码结果不同
具体表现为:php使用file_get_content()函数或者curl()获取远程地址结果不同
环境1:本地win7+xampp(php集成环境)
脚本:test.php
操作:浏览器访问localhost/test.php
结果:可以获取内容
环境2: 虚拟主机+linux系统
操作:浏览器访问虚拟主机http://40036.vhost11.cloudvhost.net/test.php
结果:无法获取内容(备注:url如果不带端口,可以获取内容,说明该函数没有被禁用)
环境3:浏览器直接访问http://xxxx.com:443
结果:显示内容正常
具体代码:
<?php
error_reporting(E_ALL);
//本地环境有效,测试环境虚拟主机无效
//url带443端口
$url = 'http://k.btc123.com:443/period?step=900&sid=df250905&symbol=btcchinabtccny&mode=simple&nonce=1396124044571';
//(备注:url如果不带端口,可以获取内容,比如www.baidu.com,说明该函数没有被禁用)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//网上有说curl获取https的时候,要加下面语句
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
curl_close($ch);
echo($output);
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
猜测是btc123会根据sid参数限制IP地址访问,也许是把IP哈希得到一个sid。
你的代码里的那个url,在我这里访问也是空白。但是我上k.btc123.com,然后拿到了这个url(http://k.btc123.com:443/period?step=900&sid=d776513d&symbol=bitstampbtcusd&mode=simple&nonce=1396185550507)就可以访问,然后我在其他IP地址访问就没有内容。
试一下先抓取http://k.btc123.com/,拿到页面里的sid,然后再抓取http://k.btc123.com:443/period。