20,359
社区成员
发帖
与我相关
我的任务
分享
<?php
$cookie_jar_index = 'cookie.txt';
//模拟登录
$url = "http://xxxxxxxxxjsp/main.jsp";//地址就不发出来了
$params = "Username=xxxxxxx&svr_id=xxxxxxx&PassWord=xxxxxx&image.y=11&image.x=20";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar_index);
//curl_setopt($ch, CURLOPT_COOKIE, "fruit=apple; colour=red");
//上面代码是直接传递cookie信息,而非文件
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//curl_setopt($ch, CURLOPT_NOBODY, 1);//这个不能打开,否则无法生成cookie文件
ob_start();
curl_exec($ch);
curl_close($ch);
ob_clean(); //登录成功以上内容
//模拟 登录成功后 继续 POST 数据 并抓取跳转的页面
$url = "xxxxxxxxxxx/jsp/realtimemonitor/choose_Dev_attribute_do.jsp";//登录成功 继续post数据的地址
$referer_url='http://xxxxxxxxxx/jsp/realtimemonitor/choose_Dev_attribute2.jsp';// 发送post数据页面的referer来路页面
$button=’‘';//这个值我用工具抓取的IE下的工具数据 居然是个 ”口“个符号,用火狐下的工具看到的是%C8%B7+%B6%A8
$ckj='1';
$cqkytj='2';
$qkj='0';
$data ='button='.urlencode($button).'&ckj='.urlencode($ckj).'&cqkytj='.urlencode($cqkytj).'&qkj='.urlencode($qkj);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2,CURLOPT_REFERER,$referer_url);
curl_setopt($ch2, CURLOPT_COOKIEJAR, $cookie_jar_index); // 这是 把cookie存入
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar_index); //这是 使用COOKIE
curl_setopt($ch2, CURLOPT_POST, 1);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $data);
//curl_setopt($ch2,CURLOPT_FOLLOWLOCATION,1);
ob_start();
curl_exec($ch2);
curl_close($ch2);
$rs = ob_get_contents(); //$rs就是返回的内容
ob_clean();
//模拟 获取看到的页面
$url = "工具查看到的POST数据后 跳转的页面";
$referer_url='xxxxxxx/jsp/realtimemonitor/choose_Dev_attribute2.jsp'; //工具看到的跳转页面的referer地址
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2,CURLOPT_REFERER,$referer_url);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar_index);
//下面这个跳转 打开后 ,连登录成功的第一个页面都不能显示 了所以我把它注释掉了,求高手解答
//curl_setopt($ch2,CURLOPT_FOLLOWLOCATION,1);
ob_start();
curl_exec($ch2);
curl_close($ch2);
$rs = ob_get_contents(); //$rs就是返回的内容
ob_clean();
print_r($rs);
print_r($data); //打印 内容总是 登录成功后 的页面, 但是继续post数据 跳转的页面始终不成功 求绝顶高手解答
?>
遇到一个问题,curl 模拟登录能成功抓取登录后的页面,但是我想要抓取的页面,需要继续POST数据后才能获得,并且post数据后cookie 会发生变化,页面也会有重定向,而且我用工具看浏览器POST的数据里面,有个button 值居然是个“口” 这么个符号,我就懵了火狐浏览器工具查看到的值是,请问这要怎么才能带着cookie 保持登录并继续post 数据然抓取跳转后的页面啊