采集过程中,取验证码失败,大侠来看看

浏览:628 发布日期:2014/06/26 分类:求助交流
源网站上的验证码是通过JS生成的

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、完成
但是提示验证码错误


各位大侠帮我看看,以上的这些是不是哪里有错,为什么会出错

如果不是上面代码的问题,是否可以提供其它方法来获取验证码
最佳答案
评论( 相关
后面还有条评论,点击查看>>