客户端打开已登录的网页(C#) (转)

简介: 像QQ、百度hi等等即时通讯软件都有这种功能,就是你点击客户端的一些按钮,打开的网页都是已经登录了的,因为客户端已经登录过了,不用在网页上重新登录一遍。   今天在百度知道上一个网友遇到这个问题,我就花时间研究一下,帮忙解决了。

像QQ、百度hi等等即时通讯软件都有这种功能,就是你点击客户端的一些按钮,打开的网页都是已经登录了的,因为客户端已经登录过了,不用在网页上重新登录一遍。

  今天在百度知道上一个网友遇到这个问题,我就花时间研究一下,帮忙解决了。

 

  用C#实现起来也比较简单(但有一个条件,网页登陆的时候不能有验证码),就是先用HttpWebRequest登陆获取到cookie值,然后再把cookie写到浏览器的cookie目录,最后再打开浏览器。以下为实现代码,对于有什么问题欢迎留言。

 

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
      using  System.IO;  

   
using  System.Text;  

   
using  System.Net;  

   
using  System.Runtime.InteropServices;  

   
class  Login  

   {  

        [DllImport(
" wininet.dll " , CharSet  =  CharSet.Auto, SetLastError  =   true )]  

        
public   static   extern   bool  InternetSetCookie( string  lpszUrlName,  string  lbszCookieName,  string  lpszCookieData);  

        
public   static   void  Main()  

        {  

            CookieCollection myCookies 
=   new  CookieCollection();  // cookie集合  

            
byte [] data  =  Encoding.ASCII.GetBytes( " username=XXXXXX&password=******** " );  // 用户名、密码信息  

            
string  url  =   @" http://www.XXX.com/…… " // 登陆表单的action地址  

            HttpWebRequest myRequest 
=  (HttpWebRequest)WebRequest.Create(url);  

            myRequest.Method 
=   " POST " ;  

            myRequest.ContentType 
=   " application/x-www-form-urlencoded " ;  

            myRequest.ContentLength 
=  data.Length;  

            myRequest.CookieContainer 
=   new  CookieContainer();  

            
try  

            {  

                 Stream newStream 
=  myRequest.GetRequestStream();  

                 newStream.Write(data, 
0 , data.Length);  

                 newStream.Close();  

            }  

            
catch  (WebException)  

            {  

                 
throw   new  WebException( " 网络链接错误! " );  

            }  

            HttpWebResponse myResponse 
=  (HttpWebResponse)myRequest.GetResponse();  

            myCookies.Add(myResponse.Cookies); 
// 添加cookie  

            
foreach  (Cookie cookie  in  myCookies)  // 将cookie设置为浏览的cookie  

            {  

                 InternetSetCookie(  

                      
" http:// "   +  cookie.Domain.ToString(),  

                      cookie.Name.ToString(),  

                      cookie.Value.ToString() 
+   " ;expires=Sun,22-Feb-2099 00:00:00 GMT " );  

            }  

            System.Diagnostics.Process.Start(
" http://www.XXX.com/ " );  // 打开浏览器  

        }  

   } 

 

 

目录
相关文章
|
12月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
5037 123
|
设计模式 IDE API
C# 一分钟浅谈:GraphQL 客户端调用
本文介绍了如何在C#中调用GraphQL API,涵盖基本步骤、常见问题及解决方案。首先,通过安装`GraphQL.Client`库并创建客户端实例,连接到GraphQL服务器。接着,展示了如何编写查询和突变,以及处理查询语法错误、变量类型不匹配等常见问题。最后,通过具体案例(如管理用户和订单)演示了如何在实际项目中应用这些技术,帮助开发者更高效地利用GraphQL。
364 38
C# 一分钟浅谈:GraphQL 客户端调用
|
设计模式 API 数据处理
C# 一分钟浅谈:GraphQL 客户端调用
本文介绍了如何在C#中使用`GraphQL.Client`库调用GraphQL API,涵盖基本查询、变量使用、批量请求等内容,并详细说明了常见问题及其解决方法,帮助开发者高效利用GraphQL的强大功能。
446 57
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
1349 8
|
数据采集 API C#
网页解析高手:C#和HtmlAgilityPack教你下载视频
使用C#和HtmlAgilityPack解析小红书网页,下载其视频内容。文章涵盖了解析网页、获取视频链接、C#实现、HtmlAgilityPack简化解析、代理IP确保下载稳定及多线程提高下载效率。提供的代码示例展示了如何设置代理和多线程下载视频。实验结果显示,该方法能有效、高效地下载小红书视频。
563 5
网页解析高手:C#和HtmlAgilityPack教你下载视频
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
274 0
|
网络安全 C#
C# HttpWebRequest 获取 HTTPS 网页内容
C# HttpWebRequest 获取 HTTPS 网页内容
2436 0
|
网络协议 C# C++
BytesIO | 零基础轻松看懂 C# TCP客户端(完整源码+视频教程)
零基础轻松看懂 C# TCP客户端(完整源码+视频教程) 如果非IT行业的女朋友都能学会的话,应该就算0基础入门的教学视频了吧! 超简单的C# TCP开发入门,短短的代码,完整的功能,掏出你的VS码一个试试手吧!
470 0
BytesIO | 零基础轻松看懂 C# TCP客户端(完整源码+视频教程)
|
Web App开发 网络协议 安全
C# | 实现QUIC协议的客户端与服务端
QUIC(Quick UDP Internet Connections)是一种基于UDP协议的可靠、安全、高效的传输协议,由Google开发。它是HTTP/3协议的基础,并被视为未来互联网传输层协议的重要候选者之一。 与TCP不同,QUIC协议使用多路复用(Multiplexing)技术,可以在一个连接上同时传输多个数据流,这些数据流可以独立于彼此进行流量控制和拥塞控制,从而提高了传输效率。此外,QUIC协议还支持零RTT握手,即在第一次连接时就可以发送数据,进一步减少了延迟。
730 0
C# | 实现QUIC协议的客户端与服务端
|
API C# 数据安全/隐私保护
C# 实现网页内容保存为图片并生成压缩包
C# 实现网页内容保存为图片并生成压缩包