如何登录到端口80,并通过c#中的web浏览器控件输入凭据

本文关键字:中的 web 浏览器 输入 控件 登录 何登录 | 更新日期: 2023-09-27 18:07:26

我必须使用一个web浏览器控件,它需要登录到路由器的html页面。我想登录到它,但绕过登录弹出屏幕。

请给我建议,我如何能通过一个webbrowser控件在windows窗体上实现这一点。

编辑:这是我在插入凭据后在源页面中可以看到的内容。不确定是否有帮助。
if(F.now_proto.value == "pppoe" || F.now_proto.value == "pptp" || F.now_proto.value == "l2tp" || F.now_proto.value == "heartbeat"){
        if(F.ppp_username.value == ""){
//                      alert("You must input a username!");
                        alert(errmsg.err0);
            F.ppp_username.focus();
            return false;
        }
        if(F.ppp_passwd.value == ""){
//                      alert("You must input a passwd!");
                        alert(errmsg.err6);
            F.ppp_passwd.focus();
            return false;
        }

更新:解决方案

webBrowser1.Navigate (http://username: password@192.168.1.1)

做它。

如何登录到端口80,并通过c#中的web浏览器控件输入凭据

您可以操作浏览器来填写表单并单击提交。例如,我可以这样登录Craigslist:

webBrowser.Document.Forms["login"].All["inputEmailHandle"].InnerText = @"username";
webBrowser.Document.Forms["login"].All["inputPassword"].InnerText = "password";
webBrowser.Document.Forms["login"].InvokeMember("submit");

我将此附加到web浏览器控件的PageLoaded事件,然后检查我是否在正确的URL。"login"部分是craigslist源代码中的表单名称。作为一个例子,它看起来像这样:

<form id="login" action="..." method="...">

, "inputEmailHandle"为用户名/emaailo, "inputPassword"为密码。然后我调用"submit",表单就提交了。

通过80端口的身份验证将是公开的明文,除非选择了某种加密的身份验证方法。

我假设您没有使用表单身份验证或基本身份验证,因为两者都应该只在SSL(端口443)下。这意味着服务器可能正在请求NTLM身份验证。你可以在响应头中用Fiddler检查这个。对于基于SSL的基本认证,有一些更简单的解决方案(如果有可能让网站更改为允许https和基本认证,那将是最简单的)。

WPF WebBrowser控件是COM IE浏览器组件的包装器。也不会暴露所有的内脏和脏物。你必须深入挖掘并提供一个IOleSite容器,让IE与你的应用程序对话,让你知道身份验证握手。

我还没有使用它,但是在CodeProject (http://www.codeproject.com/KB/miscctrl/csEXWB.aspx)上有一个Web浏览器包装器,看起来它做得很好。即使你不使用它,它也可能为你指明在WPF WebBrowser控件下与COM层通信的正确方向。

http://username: password@192.168.1.1