PHP curl 抓包問題

來源:互聯網
上載者:User
用curl抓取網頁書據,成績,課表都是用這種方法抓取的,但是抓取就不行了,報500錯誤

這是用httpwatch抓包工具抓取的頁面,cookie正確拿到

這是要抓取的介面,資料通過post傳輸
 

PHP代碼

報錯介面


回複討論(解決方案)

第一:帶上CURLOPT_REFERER試試,對方是不是有可能判斷了頁面來源
第二:對方的登陸頁是否有隱藏參數,如果有的話需要先訪問登陸頁擷取隱藏值再提交
第三:沒看見你什麼地方提交了登入的帳號和密碼,就是自己這邊POST過來的帳號和密碼

$url = "http://202.117.64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
這是提交賬戶和密碼!
CURLOPT_REFERER 要加什嗎?

找到兩個隱藏參數,但是貌似沒什麼用

第一:帶上CURLOPT_REFERER試試,對方是不是有可能判斷了頁面來源
第二:對方的登陸頁是否有隱藏參數,如果有的話需要先訪問登陸頁擷取隱藏值再提交
第三:沒看見你什麼地方提交了登入的帳號和密碼,就是自己這邊POST過來的帳號和密碼


$url = "http://202.117.64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
這是提交賬戶和密碼!
CURLOPT_REFERER 要加什嗎?

找到兩個隱藏參數,但是貌似沒什麼用

幫你測試了一下,登入是沒問題的,已經登入成功,主要問題出在你第二次請求的參數上,檢查一下參數,抓取你第二個頁面上所有的參數下來,另外JAVA的這個報錯不是很懂!

幫你測試了一下,登入是沒問題的,已經登入成功,主要問題出在你第二次請求的參數上,檢查一下參數,抓取你第二個頁面上所有的參數下來,另外JAVA的這個報錯不是很懂!


你抓取成功了嗎?

大家幫忙看看,怎麼回事???

你的流程和代碼都有問題!正確的流程應該是:
1、訪問 http://202.117.64.25/
擷取 cookie。因為他的 sessionid 在這個頁面發出的
2、訪問 http://202.117.64.25/loginAction.do 並發送 post 表單資料
3、第2步返回的是一個架構頁,你得根據需要進入某個架構
比如訪問 http://202.117.64.25/menu/s_top.jsp 可以得到已登入資訊:歡迎光臨 黃小龍
測試代碼

<?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');</pre>  <br /> curl_get.php  <pre class="sycode" name="code"><?phpfunction curl_get($durl, $data=array()) {  $cookiejar = realpath('cookie.txt');  $t = parse_url($durl);  $ch = curl_init();  curl_setopt($ch, CURLOPT_URL,$durl);  curl_setopt($ch, CURLOPT_TIMEOUT,5);  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);  curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/");  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  curl_setopt($ch, CURLOPT_ENCODING, 1); //gzip 解碼  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  if($data) {    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  }  $r = curl_exec($ch);  curl_close($ch);  return $r;}</pre> </p> <p class="sougouAnswer">  <p class="yy">   你的流程和代碼都有問題!正確的流程應該是:   <br /> 1、訪問 http://202.117.64.25/   <br /> 擷取 cookie。因為他的 sessionid 在這個頁面發出的   <br /> 2、訪問 http://202.117.64.25/loginAction.do 並發送 post 表單資料   <br /> 3、第2步返回的是一個架構頁,你得根據需要進入某個架構   <br /> 比如訪問 http://202.117.64.25/menu/s_top.jsp 可以得到已登入資訊:歡迎光臨 黃小龍   <br /> 測試代碼   <pre class="sycode" name="code"><xmp><?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');</pre>   <br /> curl_get.php   <pre class="sycode" name="code"><?phpfunction curl_get($durl, $data=array()) {  $cookiejar = realpath('cookie.txt');  $t = parse_url($durl);  $ch = curl_init();  curl_setopt($ch, CURLOPT_URL,$durl);  curl_setopt($ch, CURLOPT_TIMEOUT,5);  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);  curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/");  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  curl_setopt($ch, CURLOPT_ENCODING, 1); //gzip 解碼  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  if($data) {    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  }  $r = curl_exec($ch);  curl_close($ch);  return $r;}</pre>  </p>  <br /> 非常感謝你,成功了,但是還是不知道為什嗎?  <br /> 這是我最終代碼  <br />  <pre class="sycode" name="code"><?phpinclude './curl/curl_get.php';$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/xszxcxAction.do?oper=tjcx', 'zxxnxq=2014-2015-1-1&zxXaq=0&zxJxl=0011&zxZc=11&zxJc=2&zxxq=2&pageSize=20&page=1&currentPage=1&pageNo=');?></pre><li ><i class="layui-icon">&#xe63a;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.