码迷,mamicode.com
首页 > 其他好文 > 详细

Loadrunner+Tesseract-OCR 识别验证码实现自动注册

时间:2014-11-26 18:48:19      阅读:1619      评论:0      收藏:0      [点我收藏+]

标签:des   cWeb   blog   http   io   ar   os   使用   sp   

发现一个网站注册时发送给手机的验证码可以直接在网站上展出出来,考虑可以使用LR与OCR结合尝试自动注册

http://elearning.yunxuetang.cn/portal/enterpriseregister.htm

 

 

Tesseract-OCR 下载

在code.google上下载tesseract-ocr-setup-3.02.02.exe

安装后实验

http://elearning.yunxuetang.cn/portal/enterpriseregister.htm

填写手机号后等待30秒获得带有验证码的图片

图片另存为test.png
bubuko.com,布布扣
tesseract test.png out
bubuko.com,布布扣
 

loadrunner使用tesseract-ocr时需要通过bat实现

bat内容如下
----------------------------------------------------------------------------------------
c:
cd\
tesseract.exe test.png out digits
----------------------------------------------------------------------------------------
 
------------------在config中修改digits文件,将1234567890加入则只识别数字--------------bubuko.com,布布扣
------------------在config中修改digits文件,将1234567890加入则只识别数字--------------
 
 
参数设置
bubuko.com,布布扣
 
action脚本


Action()
{


    int flen;        //定义一个整型变量保存获得文件的大小
   long filein;
   long filedinn;    //保存文件

   char filepath[256]="c:\\test1.jpg";  //保存文件路径及文件名
   char result[20];//从文件中读取验证码
   web_set_max_html_param_len("2000000");

   web_reg_save_param("pic",
                      "LB=",
                      "RB=",
                      "SEARCH=BODY",    //获取响应的全部内容,作为文件内容保存 (图片路径在body里面)
                      LAST);


   web_url("index.html",
        "URL=http://test.qianwang365.com/usercenter/index.html",             //含有验证码的注册页面
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t3.inf",
        "Mode=HTML",
        EXTRARES,
        "Url=http://elearning.yunxuetang.cn/Services/DrawNewRegisterValidateCode.ashx",             //验证码图片的地址
        ENDITEM,
        LAST);


    flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
    //获得下载图片的文件大小

    if(flen > 0)
    {

    if((filedes = fopen(file,"wb")) == NULL)
    {
    lr_output_message("Open Failed!");
    return -1;
    }

    fwrite( lr_eval_string("{pic}"),flen,1, filedin);

    fclose( filedin );
    }

    system("c:\\test.bat");    //在CMD命令行中运行OCR命令

    lr_output_message("result: %s", filedin); //打印出读取后的数据
    /*
    在C盘根目录下创建批处理文件test1.bat:
    #进入到含有验证码图片的目录
    c:
    cd\
    tesseract.exe test.png out
    #执行完成后,自动退出命令行
    exit
    */

    if((filedess = fopen("c:\\out.txt","rt")) == NULL)
    {
    lr_output_message("Open txt Failed!");
    return -1;
    }
    fread( result,6,1,filedinn);//从文件中读取验证码
    fclose( filedinn );

    lr_output_message("result: %s", result); //打印出读取后的数据
    lr_error_message("result: %s",lr_eval_string(result));

    lr_save_string(result,"");


    web_custom_request("ExistsRegisterMobile",
        "URL=http://elearning.yunxuetang.cn/Services/CommonService.svc/ExistsRegisterMobile",
        "Method=POST",
        "Resource=0",
        "RecContentType=application/json",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t6.inf",
        "Mode=HTML",
        "EncType=text/json; charset=UTF-8",
        "Body={\"key\":\"{NewParam}\"}",
        LAST);

    web_custom_request("ExistsRegisterMobile_2",
        "URL=http://elearning.yunxuetang.cn/Services/CommonService.svc/ExistsRegisterMobile",
        "Method=POST",
        "Resource=0",
        "RecContentType=application/json",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t7.inf",
        "Mode=HTML",
        "EncType=text/json; charset=UTF-8",
        "Body={\"key\":\"{NewParam}\"}",
        LAST);

    web_custom_request("SendValidateCodeToMobile",
        "URL=http://elearning.yunxuetang.cn/Services/CommonService.svc/SendValidateCodeToMobile",
        "Method=POST",
        "Resource=0",
        "RecContentType=application/json",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t8.inf",
        "Mode=HTML",
        "EncType=text/json; charset=UTF-8",
        "Body={\"mobile\":\"{NewParam}\"}",
        LAST);

    lr_think_time(22);

    web_custom_request("ExistsByOrganizationName",
        "URL=http://elearning.yunxuetang.cn/Services/CommonService.svc/ExistsByOrganizationName",
        "Method=POST",
        "Resource=0",
        "RecContentType=application/json",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t9.inf",
        "Mode=HTML",
        "EncType=text/json; charset=UTF-8",
        "Body={\"organizationName\":\"{NewParam}\"}",
        EXTRARES,
        "Url=http://i.firefoxchina.cn/cclv/v2/patterns.json", "Referer=", ENDITEM,
        "Url=http://i.firefoxchina.cn/skipsb/v1/urls.json", "Referer=", ENDITEM,
        LAST);

    web_custom_request("ExistsByDomainName",
        "URL=http://elearning.yunxuetang.cn/Services/CommonService.svc/ExistsByDomainName",
        "Method=POST",
        "Resource=0",
        "RecContentType=application/json",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t10.inf",
        "Mode=HTML",
        "EncType=text/json; charset=UTF-8",
        "Body={\"domainName\":\"{NewParam}.yunxuetang.cn\"}",
        LAST);
    lr_think_time(50);
    web_submit_data("enterpriseregister.htm_2",
        "Action=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Method=POST",
        "RecContentType=text/html",
        "Referer=http://elearning.yunxuetang.cn/portal/enterpriseregister.htm",
        "Snapshot=t11.inf",
        "Mode=HTML",
        ITEMDATA,
        "Name=__EVENTTARGET", "Value=", ENDITEM,
        "Name=__EVENTARGUMENT", "Value=", ENDITEM,
        "Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState2}", ENDITEM,
        "Name=txtMobileNumber2", "Value=", ENDITEM,
        "Name=txtValidateCode2", "Value=输入短信验证码", ENDITEM,
        "Name=txtEnterpriseName", "Value={NewParam}", ENDITEM,
        "Name=rad", "Value=on", ENDITEM,
        "Name=txtWebSiteName", "Value={NewParam}", ENDITEM,
        "Name=txtValidateCode", "Value={NewParam}", ENDITEM,
        "Name=chkAcceptProtocol", "Value=on", ENDITEM,
        "Name=btnSubmit", "Value=", ENDITEM,
        "Name=hfImagePath", "Value=", ENDITEM,
        "Name=hfInageSelectedIndex", "Value=2", ENDITEM,
        "Name=hfIndustryTemplateID", "Value=49903f80-7c0b-4b0f-8f46-c8822534bb5e", ENDITEM,
        "Name=hfIndustryTemplateName", "Value=通用/其他", ENDITEM,
        "Name=hfEnterpriseName", "Value=", ENDITEM,
        "Name=hfDomainName", "Value=", ENDITEM,
        "Name=hfValidateCode", "Value=", ENDITEM,
        "Name=hfValidateCode2", "Value=", ENDITEM,
        "Name=hfMobileNumber", "Value=", ENDITEM,
        "Name=hfCurrentOrgID", "Value=", ENDITEM,
        "Name=hfMobileNumber2", "Value={NewParam}", ENDITEM,
        "Name=hfMobileNumber3", "Value=", ENDITEM,
        "Name=hfAgentName", "Value=", ENDITEM,
        "Name=hfImgCheckCode", "Value={VC}", ENDITEM,
        "Name=hfBusinessLicenseUrl", "Value=", ENDITEM,
        "Name=hfInviteNo", "Value=afe31852-fba5-46f9-975a-84928824dddf", ENDITEM,
        "Name=hfRandomKey", "Value=a000e7fe-1e6b-431f-88c2-f51446fc04ee", ENDITEM,
        "Name=hfObligateOrganizationID", "Value=45669dda-c007-4812-9b60-b2e6e42f24ce", ENDITEM,
        LAST);

    return 0;
}
 
 
执行结果
 
bubuko.com,布布扣
 
 登录页面http://18888888888.yunxuetang.cn/login.htm
bubuko.com,布布扣
 
 
换一个不存在的http://18888888890.yunxuetang.cn/login.htm,应该是跳到了一个固定的网页。
bubuko.com,布布扣
 
 
 

 

Loadrunner+Tesseract-OCR 识别验证码实现自动注册

标签:des   cWeb   blog   http   io   ar   os   使用   sp   

原文地址:http://www.cnblogs.com/maple42/p/4123771.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!