一段curl提交获取ems随机码的代码,本文转载自喜悦村
想模拟提交,取得返回的结果
用了snoopy和curl,貌似都米法。。
不知道是我方法不对还是什么
研究了下原理,应该是有一个session,然后有一个隐藏的 myEmsbarCode 貌似随机数的东西。。
贴上自己的snoopy代码。求高手解决
原文地址在这里:
http://www.phpx.com/happy/thread-144507-1-1.html
<?php
set_time_limit(0);
error_reporting(E_ALL);
$url = "http://www.ems.com.cn/qcgzOutQueryAction.do?reqCode=gotoSearch";
$url2 = "http://www.ems.com.cn/qcgzOutQueryAction.do";
$mailNum= "EI436138259JP";
$cookie_jar= dirname(__FILE__) ."/test.cookie";
echo emsQuery($url,$url2,$mailNum,$cookie_jar);
function emsQuery($url,$url2,$mailNum,$cookie_jar){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch,CURLOPT_COOKIE,$cookie_jar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch,CURLOPT_REFERER,$url);
$content=curl_exec($ch);
preg_match('/name="myEmsbarCode" value="(.*)"/i',$content,$myEmsbarCode);
curl_close($ch);
$myEmsbarCode=$myEmsbarCode[1];
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL,$url2);
$post="reqCode=browseBASE&myEmsbarCode=$myEmsbarCode&mailNum=$mailNum";
curl_setopt($ch2, CURLOPT_POST, 1);
curl_setopt($ch2, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch2,CURLOPT_REFERER,$url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$content2 = curl_exec($ch2);
curl_close($ch2);
preg_match('/td class="txt-main" align="left">(.*)<form name="form1"/isU',$content2,$res);
return $res[1];
}
?>