在jQuery.ajax脚本中处理captcha挑战

时间:2011-08-16 20:11:25

标签: jquery captcha

这个jQuery调用一个脚本来抓取一个页面并将一个json数组返回给jQuery。但是,在某些情况下,cURL脚本会导致重定向到验证码质询页面(请参阅类脚本中的cURL)。

一旦我确定cURL页面是验证码(而不是目标页面),我该如何将验证码重定向到用户?

我应该只提取验证码图像和表单的操作参数和隐藏字段,并重新创建表单以允许用户提交吗?

jQuery('#myDiv a').click
    (
        function()
        {       
            jQuery('#loader').show();

            var result='';

            jQuery.ajax
            ({
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                url: getPage.php,
                success: function(data)
                {       
                    if(data['captcha'])
                    {
                        //need to load the captcha page for the user to complete
                        return;
                    }
                }
            });
        });


//Contents of getPage.php

    class loadPageCurl {

        function loadPage($url, $headonly = TRUE ){

        $agents = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_USERAGENT, $agents);
        curl_setopt($ch, CURLOPT_URL, $url);

        $curlResp = curl_exec($ch);
        curl_close($ch);

        //check to see if captcha or regular page and process accordingly
        if(//page is captcha)
        {
            //Redirect the html stream to the user for captcha completion
        }
        else
        {
        return $curlResp;
        }
    }

1 个答案:

答案 0 :(得分:0)

http://api.jquery.com/jQuery.get/必须提供帮助。

$.get('ajax/test.html', function(data) {
    $('.result').html(data);
    alert('Load was performed.');
});

可以从文件加载内容并将其放入div或类似的东西。

    if(//page is captcha)
    {
            $.get('captcha.html', function(data) {
                $('.captchaDiv').html(data);
            });
    }

这可以解决您的问题。