Extracting Data From CAPTCHA-Protected Websites
使用CAPTCHA保护的网站上的半自动和全自动数据提取功能。全自动数据提取需要一个第三方CAPTCHA服务的账户,每个验证码的费用都要收费。半自动数据提取是免费的,但是需要您在运行数据提取项目时手工解码CAPTCHA图像。
使用代理服务器
有时,CAPTCHA保护网站的最简单的解决方案是使用代理服务器列表。当CAPTCHA页面在浏览网站一段时间后会随机显示,这一点尤其正确。如果你总是需要通过验证码页面才能进入网站的某个部分,代理服务器将不会有帮助。
半自动数据提取
要为半自动验证码的处理配置数据提取项目,您需要做以下工作:
- 添加一个选择CAPTCHA图像的内容元素。然后使用Misc options选项卡来不选Save content选项。
- 添加一个FormField元素来选择CAPTCHA输入字段。然后使用高级选项选项卡来选择图像元素作为CAPTCHA元素。
- 添加一个提交CAPTCHA表单的FormSubmit模板。如果不总是显示CAPTCHA表单,您可能需要设置Misc选项在可选模板(Optional template)。
当 Visual Web Ripper遇到CAPTCHA元素时,它会显示CAPTCHA图像并请求验证码码。
image.png
全自动数据提取
完整的自动验证码处理需要一个第三方验证码的帐户。第三方识别服务必须提供服务.NET API,您必须创建一个Visual Web Ripper脚本,该脚本使用这个API来调用服务。
Visual Web Ripper 包括API和标准脚本来调用下面的验证码识别服务。
要配置您的数据提取项目来实现完全自动化的CAPTCHA处理,您需要做以下工作:
- 添加一个选择CAPTCHA图像的内容元素。然后使用Misc options选项卡来取消Save content选项。
- 添加一个FormField元素来选择CAPTCHA输入字段。然后使用高级选项选项卡来选择图像元素作为CAPTCHA元素。
- 使用AdvancedOptions选项卡向选择CAPTCHA输入字段的FormField元素添加一个Decode CAPTCHA script。
- 添加一个提交CAPTCHA表单的FormSubmit模板。如果不总是显示CAPTCHA表单,您可能需要设置Misc选项在*Optional template *。
打码脚本
一个解码的CAPTCHA脚本被用来调用验证码识别服务。这个脚本得到CAPTCHA图像是一个输入参数,并且应该以字符串格式返回解码的CAPTCHA值。
你可以通过在Advanced Options中点击Decode CAPTCHA script选项按钮,向FormField元素添加一个解码验证码脚本。
image.png在您点击解码验证码脚本按钮后,脚本编辑器就会打开。
image.png默认的解码CAPTCHA脚本是设计用于处理 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. |
网友评论