我在C#中使用WebBrowser
来显示包含登录表单的网站。成功登录后,网站的某些部分未显示在WebBrowser
中,但在默认浏览器中,相同的网站显示正确。
另一个问题是,当我点击WebBrowser
中的链接时,它会在默认浏览器中打开,例如(Firefox,Chrome等)。
我的应用程序会自动设置用户名和密码以便登录。
ChangeUserAgent();
var request = (HttpWebRequest)WebRequest.Create(loadLinks(namewebsite));
string useragent = request.UserAgent = "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393";
webBrowser2.Navigate(request.RequestUri,null,null, "User-Agent:Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393");
loadauthintication(namewebsite, _username, _password);
这是方法loadauthintication
using (var webClient = new System.Net.WebClient())
{
var json = webClient.DownloadString(@"http://example.com/getauthintication.php?name="+name+"&user="+user+"&pass="+pass);
// Now parse with JSON.Net
// MessageBox.Show(json);
string[] array = json.Split('~');
username = array[0];
password = array[1];
}
方法
public void ChangeUserAgent()
{
ua = "Googlebot/2.1 (+http://www.google.com/bot.html)";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, null, 0, 0);
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);
}
答案 0 :(得分:0)
WebBrowser
control的问题在于默认情况下它会在IE7渲染模式下呈现输出。 Rick Strahl编写了一个very detailed post,其中涵盖了解决此问题的一些方法。
我通常使用的方法是通过在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
创建一个新密钥来修改注册表,该密钥以应用程序的可执行文件命名(例如ConsoleApplication1.exe
)并将值设置为是我所知道的Internet Explorer版本将安装在目标环境中 - 对我而言,它总是IE11 - 值为11001.
注意:正如Rick在帖子中提到的那样,请记住,当通过Visual Studio运行时,你的exe的名称可能是ConsoleApplication1.vshost.exe
,因此你需要为该