此链接指向想象力验证码imagination
的实现作者自己要求人们制定算法来尝试其针对AI攻击的效率。
基本上第一页要求鼠标点击图像上的任何地方......我的问题是我的算法在图像上出现了点(x,y),但我想在这个链接上实时模拟它...
有人可以告诉我如何在此链接上发送积分值并收回消息我是否成功....
基本上我在问我如何在我的算法使用C#提供的点上模拟鼠标点击此链接...
我只是想研究这个验证码的功能及其准确性。
非常感谢
答案 0 :(得分:8)
如果您能够直接在该页面上执行JavaScript,则此代码将执行:
submitClick(document.getElementById("img").value, x, y, "tiled");
否则,请点击此网址,将您自己的值替换为id
,x
和y
:
http://goldbach.cse.psu.edu/s/captcha/captcha_controller.php?id=87170&x=66&y=149&source=tiled
解析响应 - 如果坐标正确,响应将包含“步骤2”。如果没有,响应将包含“步骤1”,它将具有<div id="error">
。
答案 1 :(得分:3)
如果您想从代码中使用他们的实时网站,我认为您正在谈论屏幕刮擦。我强烈建议您查看HTML Agility Pack(可通过nuget获取)。这将允许您将DOM读入您的应用程序,然后随意与它进行交互。
答案 2 :(得分:2)
这可能是一个愚蠢的答案,但如果您试图模仿鼠标点击并查明它是否成功,为什么不使用Selenium Browser add-in来记录您的脚本/写&#39 ;你自己的。
然后你可以有一个测试套件来试图反对你各种不同的验证码......希望这能达到你想要做的......
答案 3 :(得分:1)
WebAii有这个功能。以下是我过去在某些时候根据您的情况定制的一些示例代码。只是将它放在一个类中,省略了类容器,因为它会填充格式
protected static Manager _manager = null;
protected static Manager _manager = null;
protected Browser _main;
protected Find _find;
public WebAiiAutomater()
{
if (_manager != null)
{
foreach (var broswer in _manager.Browsers)
{
broswer.Close();
}
return;
}
var settings = new Settings(BrowserType.InternetExplorer, @"c:\log\") { ClientReadyTimeout = 60 * 1000 };
_manager = new Manager(settings);
_manager.Start();
_manager.LaunchNewBrowser();
_manager.ActiveBrowser.AutoWaitUntilReady = true;
_main = _manager.ActiveBrowser;
_find = _main.Find;
_main.NavigateTo(@"http://goldbach.cse.psu.edu/s/captcha/");
//start looping over your alogrithm trying different x,y coords against ClickImage(x,y
}
public bool ClickImage(int x, int y)
{
//var beginsearch = _find.ById("captcha_img"); //this should get you the image, but you don't need
_manager.Desktop.Mouse.Click(MouseClickType.LeftClick, x, y);
Thread.sleep(1000); //wait for postback - might be handled internally though
var errordiv = _find.ById("error");
return errordiv !=null;
}