我正在开发一个WinForms应用程序,我希望它允许用户在没有键盘记录器能够看到密码的情况下将存储的密码输入到Web浏览器中。我已经完成了存储部分,但我无法弄清楚如何在不使用剪贴板或.NET的SendKeys类的情况下将密码插入浏览器,大多数键盘记录器都可以看到这两个类。
我研究过使用Windows消息来做这件事,但是,根据我的理解,你需要知道控件的hWnd才能发送一条Windows消息。不幸的是,似乎Web浏览器不会将hWnds用于单个文本框控件。
我知道必须有办法做到这一点。例如,在Notepad ++中,您可以将文本拖动到Web浏览器文本框中,并且文本不会显示在键盘记录器中。 Neo的SafeKeys也是如此。对于这样做的一般方法,任何人都有任何想法吗?非常感谢。
答案 0 :(得分:1)
您想要的是WebDriver库。不幸的是.net没有很多好的。您可以查看WatiN
或selenium
根据我的理解,watin不再受支持,并且不兼容多浏览器。
以下是使用selenium
可以执行的操作的示例using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("http://testing-ground.scraping.pro/login");
var userNameField = driver.FindElementById("usr");
var userPasswordField = driver.FindElementById("pwd");
var loginButton = driver.FindElementByXPath("//input[@value='Login']");
userNameField.SendKeys("admin");
userPasswordField.SendKeys("12345");
loginButton.Click();
}
我想您可以将您的驱动程序链接到现有的已打开的浏览器
如果您能够在计算机上运行ruby,我建议您使用Watir
并运行ruby脚本使用进程从c#执行Web操作。