新人请教:远程提交表单模拟查询问题
时间:2011-05-25
来源:互联网
最近在研究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是可以读出来,不知道为什么
请高手指点下啊,新人感激不尽
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'];
这应该可以把,主要是为了拉去验证码后不让他刷新,这只死我的想法,不知道行不行
那个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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28