在网页上模拟基于点击的事件
本文关键字:于点击 事件 模拟 网页 | 更新日期: 2023-09-27 18:15:56
此链接指向想像力验证码想像力的实现
作者自己要求人们制作算法来测试其对抗AI攻击的效率。
基本上第一页是要求鼠标点击图像上的任何地方…我的问题是,我的算法提出了点(x,y)的图像,但我想模拟它实时在这个链接…
有人能告诉我如何在这个链接上发送点值,并得到我是否成功的消息....
本质上我是在问我如何在我的算法使用c#给出的点上模拟鼠标点击这个链接…
我问这个只是为了研究这个验证码的特征和它的准确性。
Thanks to lot
如果您能够直接在该页上执行JavaScript,那么下面的代码可以:
submitClick(document.getElementById("img").value, x, y, "tiled");
否则,点击此url,将您自己的值替换为id
, x
和y
:
http://goldbach.cse.psu.edu/s/captcha/captcha_controller.php?id=87170& x = 66, y = 149,来源=平铺的
解析响应—如果您的坐标正确,则响应将包含"步骤2"。如果没有,响应将包含"步骤1",并且它将具有<div id="error">
。
如果您想从代码中使用他们的实时站点,我认为您正在谈论的是屏幕抓取。我强烈建议您查看一下HTML敏捷包(可通过nuget获得)。这将允许你读取DOM到你的应用程序中,然后按照你的意愿与它进行交互。
这可能是一个愚蠢的答案,但如果你试图模拟鼠标点击并找出它是否成功,为什么不使用Selenium浏览器插件来记录你的脚本/编写你自己的。
然后您可以有一个测试套件来尝试针对您的各种不同的验证码....希望这能达到你的目的....
WebAii在telerik有这个功能。以下是我在过去使用的一些示例代码,这些代码是根据您的情况定制的。把它放到类中,省略类容器因为它会增加格式
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;
}