第一步去登录页面 http://xxx.com/login.jsp 获取随机码;这里已经保存了 $cookie;
第二步构造参数 post 请求认证页面 http://xxx.com/userlogin; 这里用到上一步的$cookie;
前两步模拟登录成功,之后则是去登录后才能 ajax 请求的页面获取数据了。
代码如下:
function get_json ($url, $headers, $cookie, $post ) {
$curl = curl_init ();//初始化 curl 模块
curl_setopt ($curl, CURLOPT_URL, $url );//请求地址
curl_setopt ($curl, CURLOPT_HEADER, 0 );//是否显示头信息
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1 );//是否自动显示返回的信息
curl_setopt ($curl, CURLOPT_HTTPHEADER, $headers ); //设置请求头
curl_setopt ($curl, CURLOPT_COOKIEFILE, $cookie ); //读取 cookie
curl_setopt ($curl, CURLOPT_POST, 1 );//post 方式提交
curl_setopt ($curl, CURLOPT_POSTFIELDS, $post );//要提交的信息
ob_start ();
curl_exec ($curl ); //执行 cURL
curl_close ($curl );//关闭 cURL 资源,并且释放系统资源
$json = ob_get_contents ();
ob_clean ();
return $json;
}
问题就出在这里了,没有获得数据。
补充:
登录后,直接打开那个 json 页面,返回结果是对数据进行替换了的,所有数据替换成了无意义数据。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.