驗證碼處理

Extracting Data From CAPTCHA-Protected Websites

使用CAPTCHA保護的網(wǎng)站上的半自動和全自動數(shù)據(jù)提取功能。全自動數(shù)據(jù)提取需要一個第三方CAPTCHA服務的賬戶,每個驗證碼的費用都要收費。半自動數(shù)據(jù)提取是免費的,但是需要您在運行數(shù)據(jù)提取項目時手工解碼CAPTCHA圖像。

使用代理服務器

有時,CAPTCHA保護網(wǎng)站的最簡單的解決方案是使用代理服務器列表。當CAPTCHA頁面在瀏覽網(wǎng)站一段時間后會隨機顯示,這一點尤其正確。如果你總是需要通過驗證碼頁面才能進入網(wǎng)站的某個部分,代理服務器將不會有幫助。

半自動數(shù)據(jù)提取

要為半自動驗證碼的處理配置數(shù)據(jù)提取項目,您需要做以下工作:

  1. 添加一個選擇CAPTCHA圖像的內(nèi)容元素。然后使用Misc options選項卡來不選Save content選項。
  2. 添加一個FormField元素來選擇CAPTCHA輸入字段。然后使用高級選項選項卡來選擇圖像元素作為CAPTCHA元素。
  3. 添加一個提交CAPTCHA表單的FormSubmit模板。如果不總是顯示CAPTCHA表單,您可能需要設(shè)置Misc選項在可選模板(Optional template)。

當 Visual Web Ripper遇到CAPTCHA元素時,它會顯示CAPTCHA圖像并請求驗證碼碼。


image.png

Download CAPTCHA demo project

全自動數(shù)據(jù)提取

完整的自動驗證碼處理需要一個第三方驗證碼的帳戶。第三方識別服務必須提供服務.NET API,您必須創(chuàng)建一個Visual Web Ripper腳本,該腳本使用這個API來調(diào)用服務。

Visual Web Ripper 包括API和標準腳本來調(diào)用下面的驗證碼識別服務。

http://www.deathbycaptcha.com

要配置您的數(shù)據(jù)提取項目來實現(xiàn)完全自動化的CAPTCHA處理,您需要做以下工作:

  1. 添加一個選擇CAPTCHA圖像的內(nèi)容元素。然后使用Misc options選項卡來取消Save content選項。
  2. 添加一個FormField元素來選擇CAPTCHA輸入字段。然后使用高級選項選項卡來選擇圖像元素作為CAPTCHA元素。
  3. 使用AdvancedOptions選項卡向選擇CAPTCHA輸入字段的FormField元素添加一個Decode CAPTCHA script
  4. 添加一個提交CAPTCHA表單的FormSubmit模板。如果不總是顯示CAPTCHA表單,您可能需要設(shè)置Misc選項在*Optional template *。

打碼腳本

一個解碼的CAPTCHA腳本被用來調(diào)用驗證碼識別服務。這個腳本得到CAPTCHA圖像是一個輸入?yún)?shù),并且應該以字符串格式返回解碼的CAPTCHA值。

你可以通過在Advanced Options中點擊Decode CAPTCHA script選項按鈕,向FormField元素添加一個解碼驗證碼腳本。

image.png

在您點擊解碼驗證碼腳本按鈕后,腳本編輯器就會打開。

image.png

默認的解碼CAPTCHA腳本是設(shè)計用于處理 www.deathbycaptcha.com服務,如果您正在使用該服務,您只需要添加您的登錄名和密碼。

Visual Web Ripper 也很容易支持 bypasscaptcha.com 如果您正在使用這個CAPTCHA服務,您可以使用以下代碼。

string captcha = BypassCaptchaService.DecodeCaptcha(args.ImagePath, "key");

一個解碼驗證碼腳本可以寫入C# or VB.NET.

C# and VB.NET Scripts

一個解碼驗證碼腳本必須有一個方法,如下所示。

using  System;   
using  mshtml;   
using  VisualWebRipper;         
public   class  Script   
{   
     //See help for a definition of WrDecodeCaptchaArguments.   
     public   static  string DecodeCaptcha(WrDecodeCaptchaArguments args)   
    {   
         try   
        {   
             //Getting captcha from Decapcher.   
            string captcha = DeathByCaptchaService.DecodeCaptcha   
                (args.ImagePath, "login", "password");
                                                      
                     return  captcha;   
        }   
         catch (Exception exp)   
        {   
            args.WriteDebug(exp.Message);   
             return   "" ;   
        }   
    }   
}  

public static bool DecodeCaptcha(WrDecodeCaptchaArguments args)

腳本的方法DecodeCaptcha() 必須有這個確切的名稱和簽名,所以只更改方法體,而不是方法簽名。該方法必須返回解碼驗證碼的值。

WrProjectInitializeArguments Properties

Name Type Description
ImagePath String The CAPTCHA image path.
Project WrProject The current Visual Web Ripper project.
DestinationDataSource WrDataSource Destination data source configuration.
InputDataSource WrInputDataSource Input data source configuration.
StartTemplate WrTemplate The first template in the project.
Database WrSharedDatabase An open database connection.
* See Script Utilitiesfor more information about shared script databases.
InputParameters WrInputParameters Input parameters for the current project.
* See Using Input Parameters</a> for more information about input parameters.






























?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容