JS代码如下
function markCode(imgId,key,tokenId){oPub.codeKey=key;$("#key").val(key);$.ajax({url:"http://www.xxx.com/common/markeToken.json?rnd="+Math.random(),data:"key="+key,dataType:"json",async:false,success:function(data){if(data.token){$("#"+tokenId).val(data.token);var src="http://www.xxx.com/common/makeCode.do?token="+data.token+"&key="+key+"&rnd="+Math.random();$("#"+imgId).attr("src",src);}},error:function(){}});}源网站通过javascript:markCode("vehCodeImg","vehQueryKey","vehToken")调用应用放在SAE上,thinkphp版本为3.1.3
取验证码过程如下
1、先取token值
$f = new SaeFetchurl();
$content = $f->fetch("http://www.xxx.com/common/markeToken.json?rnd=0.6056560151945668&key=vehQueryKey");
$token = str_replace('{"token":"','',$content);
$token = trim(str_replace('"}','',$token));
$this->assign("token", $token);
echo $token;源网站返回的内容是{"token":"313444353242423639369249B603ABFECFACE44D58F0C6C721BA"}2、输出本地表单页面,这样的就可以看到验证码的图片了验证码:
<img src='http://www.xxx.com/common/makeCode.do?token={$token}&key=vehQueryKey&rnd=0.6056560151945668'>3、先本地处理,验证码可以看到了,手工输入,再提交到源网站的表单
代码中的vehCode 为手工输入的验证码
$vehCode = $this->_param('vehCode');
$token = $this->_param('token');
echo "vehCode:".$vehCode;
$f = new SaeFetchurl();
$f->setCookie("JSESSIONID","F794F02BBF3B56D18E5EC7FEF94D0E47.app3");
$f->setMethod("post");
$f->setPostData(
array(
"vehCode" => $vehCode,
"vehToken" => $token,
)
);
$content = $f->fetch("http://www.xxx.com/checkVehInfo.json");4、完成但是提示验证码错误
各位大侠帮我看看,以上的这些是不是哪里有错,为什么会出错
如果不是上面代码的问题,是否可以提供其它方法来获取验证码
最佳答案