伪造了user_agent仍然无法使用file_get_contents采集

wildlily980 2009-07-21 09:59:11
<?php
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)');

$str=file_get_contents("https://stanfordwho.stanford.edu/SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search");
echo $str;

?>





如果把地址直接输入浏览器是可以访问的,但是用file_get_contents()就报错:

Warning: file_get_contents(https://stanfordwho.stanford.edu/SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search) [function.file-get-contents]: failed to open stream: No error in D:\AppServ\www\test.php on line 5






怎么弄呢?谢谢。
...全文
319 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2009-07-22
  • 打赏
  • 举报
回复
$conn = fsockopen('ssl://stanfordwho.stanford.edu',443,&$errno,$errstr,3);//timeout 不能为0,https连接端口必须443,host前缀加ssl://,注意本地防火墙。
if(!$errno)
{
$header = "GET /SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search HTTP/1.1\r\n";
$header.= "Host:stanfordwho.stanford.edu\r\n";
$header.= "Connection:Close\r\n\r\n";
fwrite($conn,$header);
while(!feof($conn))
{
$c .= fgets($conn,128);
}
fclose($conn);

echo $c;
}
else
{
echo $erstr;
}
fenyao 2009-07-22
  • 打赏
  • 举报
回复
关注
ttm1984 2009-07-22
  • 打赏
  • 举报
回复
用curl或者snoopy
程序猿之殇 2009-07-22
  • 打赏
  • 举报
回复
简单的用file_get_contents是不行的.
这个需要先获取search页面,然后再向search.do post表单值,然后再获取.

可能需要user_agent,cookie,refer以及post表单.
wildlily980 2009-07-22
  • 打赏
  • 举报
回复
经过CU高人指点,发现问题出还没有支持php_openssl上。谢谢各位。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧