一个困扰我很久的问题求解决,webbrowser弹出安全警告的问题

月之点点 2017-04-20 11:27:12
webbrowser 弹出 安全警告,HTTPS


如何才能不弹出?

百度谷歌了很久,都说无法用程序解决。特此请教CSND的大神!
...全文
1202 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
llihua 2018-05-25
  • 打赏
  • 举报
回复
使用ServerCertificateValidationCallback只适用于托管代码通过.NET发送请求的情况,WebBrowser底层是调用的WinInet,ServerCertificateValidationCallback不会起作用。 网上找到的可行的办法有: 1、模拟点击证书安全警报窗口的“是(Y)”。 2、新写一个WebBrowser类,想尽办法实现IHttpSecurity接口服务。然后使用自己新写的WebBrowser。 https://stackoverflow.com/questions/17698002/ignoring-web-browser-ssl-security-alerts-in-console-application/21008529 3、使用WH_CALLWNDPROCRET类型的Hook,直接阻止证书安全警报窗口的显示。 https://www.codeproject.com/Articles/31163/Suppressing-Hosted-WebBrowser-Control-Dialogs
月之点点 2017-04-25
  • 打赏
  • 举报
回复
多谢大家用的是模拟点击的方法,代码如下

        #region 模拟操作关闭定时警告

        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("User32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
        private int WM_CLICK = 0x00F5;
        private void timer3_Tick(object sender, EventArgs e)
        {
            IntPtr hwnd = FindWindow(null, "安全警报");
            if (hwnd != IntPtr.Zero)
            {
                IntPtr btnhwnd = FindWindowEx(hwnd, IntPtr.Zero, "Button", "是(&Y)");
                if (btnhwnd != IntPtr.Zero)
                {
                    SendMessage(btnhwnd, WM_CLICK, 0, 0);//先移上去  
                    SendMessage(btnhwnd, WM_CLICK, 0, 0);//再点击  
                    timer3.Enabled = false;//关闭这个定时器  

                }
            }
        }
        #endregion
JimCarter 2017-04-24
  • 打赏
  • 举报
回复
这个控件是跟IE设置紧密相关的,换cefsharp用吧。
asq985 2017-04-24
  • 打赏
  • 举报
回复
升级浏览器,ie9以上或者在浏览器里打开这个页面,把它的证书复制下来,安装到受信任的根目录试试
by_封爱 2017-04-24
  • 打赏
  • 举报
回复
这问题基本上无解. 但是我们换个思路.你为什么要用webbrowser控件? 显然你不是要"开发浏览器",. 而是想通过webbrowser浏览某个网页.然后后台xxx.document获取文档.然后操作里面的元素 (可能你要爬一些值.或者自动登陆干一写别的事....). 那么我们依然可以用别的手段来实现..比如 httpweberquest webclient httpclient 来 http发送数据 进而得到你想要的值. 所以一般我总说 如果一旦程序或者代码进行不下去或者遇到瓶颈的时候.回头看看 是不是自己走错了方向.....
孤独的海啊 2017-04-24
  • 打赏
  • 举报
回复
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; } ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 这段代码的意思是让证书验证器执行第一句话回调 然后 强行返回true。 在你程序的初始化阶段执行这里。看看管用不。
  • 打赏
  • 举报
回复
ssl 不受信。
月之点点 2017-04-20
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
[quote=引用 2 楼 shijianyu00 的回复:] [quote=引用 1 楼 stherix 的回复:] 说明你所访问的站点以及这个站点访问的其他站点中 有无法验证或者失效的证书 如果只是自己电脑的话 进IE的设置把SSL关闭去掉就行了(不推荐)
webbrowser控件,程序。[/quote] webbrowser控件其实就是调用的IE内核 所以改变系统IE的设置对其也有用[/quote] 没用改变IE设置。没有用的。我都试过了
正怒月神 版主 2017-04-20
  • 打赏
  • 举报
回复
好像除了模拟点击之外,没什么特别好的解决方法。
stherix 2017-04-20
  • 打赏
  • 举报
回复
引用 2 楼 shijianyu00 的回复:
[quote=引用 1 楼 stherix 的回复:] 说明你所访问的站点以及这个站点访问的其他站点中 有无法验证或者失效的证书 如果只是自己电脑的话 进IE的设置把SSL关闭去掉就行了(不推荐)
webbrowser控件,程序。[/quote] webbrowser控件其实就是调用的IE内核 所以改变系统IE的设置对其也有用
月之点点 2017-04-20
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
说明你所访问的站点以及这个站点访问的其他站点中 有无法验证或者失效的证书 如果只是自己电脑的话 进IE的设置把SSL关闭去掉就行了(不推荐)
webbrowser控件,程序。
stherix 2017-04-20
  • 打赏
  • 举报
回复
说明你所访问的站点以及这个站点访问的其他站点中 有无法验证或者失效的证书 如果只是自己电脑的话 进IE的设置把SSL关闭去掉就行了(不推荐)
正怒月神 版主 2017-04-20
  • 打赏
  • 举报
回复
引用 7 楼 shijianyu00 的回复:
模拟点击如何做?能否贴一下代码呢
你看看,我也不清楚好不好用 http://blog.csdn.net/wyljz/article/details/49746549
月之点点 2017-04-20
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
好像除了模拟点击之外,没什么特别好的解决方法。
模拟点击如何做?能否贴一下代码呢
月之点点 2017-04-20
  • 打赏
  • 举报
回复
有大神能帮忙解决吗

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧