我正在尝试使用简单的html dom读取html页面,需要登录授权。
例如:http://example.com/login/是登录页面,http://example.com/page/是我应该解析html的地方。
所以我用curl做登录和简单的html dom来解析。
但是我不知道我的页面是否登录,因为当我从curl显示响应时它的登录页面内容!!
我在几乎所有相关问题中搜索堆栈了好几个小时,但我找不到出错的地方。
下面是我的代码
<?php
$curlPost['username']="username";
$curlPost['password']="pass";
$curlPost['token']="xxxxxxxxxx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , "http://example.com/login/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
$response= curl_exec ($ch);
curl_close($ch);
检索html页面的代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , "http://example.com/page/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
$reponse= curl_exec ($ch);
curl_close($ch);
echo $response;
?>
以下是我在页面顶部的回复:
发现HTTP / 1.1 302 日期:2015年1月28日星期三06:59:44 GMT
服务器:Apache
X-Powered-By:PHP / 5.3.3
缓存控制:无缓存
位置:/ login
转移编码:分块
内容类型:text / html;字符集= UTF-8
HTTP / 1.1 200 OK
日期:2015年1月28日星期三06:59:45 GMT
服务器:Apache
X-Powered-By:PHP / 5.3.3
缓存控制:无缓存
转移编码:分块
内容类型:text / html;字符集= UTF-8
后面是登录页面的html内容。
任何人都可以告诉我我做错了什么。
我在我的localhost中运行它,目标托管在服务器中。
我没有看到“cookies.txt”文件发生任何变化。
非常感谢。
答案 0 :(得分:0)
这看起来像我的正常输出。如果您不想要标题,请不要设置CURLOPT_HEADER