新人请教:远程提交表单模拟查询问题

最近在研究PHP,写个小程序,就是想绕过工信部的验证码查备案,网上找了半天资料,总算把验证码识别解决了,可是远程提交时总是有问题,主要2个方面:
1.我用网上说的SNOOPY,还有CURL试着POST过去表单,都是提示“业务系统繁忙,请刷新后,稍后执行查询! ”,我以为他是加了来路判断,不允许远程提交,可我本地做了一个form:
<form id ="queryCondition" name="query" action="http://zcainfo.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_searchExecute.action" method="post">
  <tr>
<td align="left" class="by1"><input type="radio" name="condition" id="radio1" value="1" checked />
<label for="radio1"> 网站域名:</label> 
</td>
<td align="left" class="by2">
<div id="d1"> 
<input name="siteDomain" type="text" class="ibs in5" id="z1" size="50" value="" />
</div>
</td>
  </tr>
<img name="img1" height="21px" style="vertical-align: bottom" src="http://zcainfo.miitbeian.gov.cn/validateCode"/>
<input name="verifyCode" type="text" class="in5" id="textfield7" size="8" value="'.$r.'" />
<input type=submit value=tijiao>
</form>
然后输入验证码提交却能查询,那应该不是来路问题?

2.验证码我识别了,可却不知道怎么提交,我每调用一下验证吗http://zcainfo.miitbeian.gov.cn/validateCode,他应该就会刷新下SESSION,所以我提交的不是他要验证的那个,我的思路是这样的,用网上找的一个验证码先把他远程拉去过来:
<?php
//code.php
session_start();
$url = "http://zcainfo.miitbeian.gov.cn/validateCode"; 
include("Snoopy/snoopy.class.php"); 
$snoopy = new snoopy; 
$snoopy->agent = "mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 2.0.50727)"; //伪装浏览器 
$snoopy->referer = "http://zcainfo.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_showPage.action"; //伪装来源页地址 http_referer
$snoopy->rawheaders["cookie"]=$_session[sid]; //伪装sessionid 
$snoopy->rawheaders["pragma"] = "no-cache"; //cache 的http头信息 
$snoopy->rawheaders["x_forwarded_for"] = "211.156.193.130"; //伪装ip 
$snoopy->fetch($url); //模拟浏览器连接并取得返回结果
//print_r($snoopy->headers);
$c =$snoopy->headers[5];
preg_match_all('|Set-Cookie: (.*);|U', $c, $mycookie); 
$_SESSION['jsid'] = $mycookie[1][0];
//echo($_SESSION['sid']);
echo($snoopy->results);
?>
同时把这个验证码的session保存起来,然后我读取我自己做的这个code.php,那就能同时保存SESSION了,
<?php
session_start();
include("Valite.php");
include("Snoopy/snoopy.class.php"); 
$valite = new Valite();
$r = $valite->getcode("http://127.0.0.1/code.php"); //验证码识别
//exit ($_SESSION['jsid']);

$url = "http://zcainfo.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_searchExecute.action";
$url2 = "http://zcainfo.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_showPage.action";

$snoopy = new snoopy;  
$posts = array();
$posts["condition"] = "1"; 
$posts["siteDomain"] = "netpass88.com"; 
$posts["verifyCode"] = $r;
 
$snoopy->agent = "mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 2.0.50727)"; //伪装浏览器 
$snoopy->referer = $url2; //伪装来源页地址 http_referer
$snoopy->rawheaders["cookie"] = $_SESSION['jsid']; //伪装sessionid 
$snoopy->rawheaders["x_forwarded_for"] = "211.156.193.130"; //伪装ip 
$snoopy->submit($url,$posts); //模拟浏览器提交并取得返回结果
print_r($snoopy->results);
?>
可识别后,还是读不出来$_SESSION['jsid'],在那个code.php是可以读出来,不知道为什么
请高手指点下啊,新人感激不尽

作者: dr0306   发布时间: 2011-05-25

请高人指点啊

作者: dr0306   发布时间: 2011-05-25


HTML code

..............

<input type=submit value=tijiao>
</form>
然后输入验证码提交却能查询,那应该不是来路问题?


既然这样查询可行,那你干嘛还要去识别他的验证码呢?这岂不是南辕北辙了,你要的不过就是她们查询之后的计算结果
HTML code

同时把这个验证码的session保存起来,然后我读取我自己做的这个code.php,那就能同时保存SESSION了,


你现在读取的验证码session是在你自己服务器上的session,这和工信部的session是不同的,你也永远不可能验证成功,除非瞎猫碰上死耗子

作者: sibang   发布时间: 2011-05-25

感谢sibang回复,识别验证码只是为了让查询更简单,同时还可以狂战其他操作,比如同时查询10个域名,那么不用提交10个表单输入10次验证码把,这其实不是主要的。
那个session我知道他的和我的肯定不一样,但我是要他的cookie值:
preg_match_all('|Set-Cookie: (.*);|U', $c, $mycookie); //JSSESION=
$_SESSION['jsid'] = $mycookie[1][0];
我的session只是暂时存储下,然后再提交这个cookie
$snoopy->rawheaders["cookie"] = $_SESSION['jsid']; 
这应该可以把,主要是为了拉去验证码后不让他刷新,这只死我的想法,不知道行不行

作者: dr0306   发布时间: 2011-05-25