Http 代理工具 实战 支持网页与QQ代理

简介:
ExpandedBlockStart.gif
复制代码
         private   void  CloseSocket(Socket socket)
        {
            CloseSocket(socket, 
true );
        }
        
private   void  CloseSocket(Socket socket,  bool  shutdown)
        {
            
if  (socket  !=   null )
            {
                
if  (shutdown)
                {
                    socket.Shutdown(SocketShutdown.Both);
                }
                socket.Close();
            }
        }
复制代码

 

B:创建中转Socket及建立连接

复制代码
ExpandedBlockStart.gif
           #region  创建中转Socket及建立连接
            IPEndPoint ipEndpoint 
=   new  IPEndPoint(ipAddress, port);
            Socket IPsocket 
=   new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
try
            {
                IPsocket.Connect(ipEndpoint); Write(
" -----Socket 建立连接! IP地址: "   +  ipAddress  +   " 网址:http:// "   +  host);
            }
            
catch  (Exception err)
            {
                Write(
" 连接失败 : "   +  err.Message);
                Write(
" 退出请求!!! " );
                CloseSocket(IPsocket, 
false );
                
return ;
            }  
            
#endregion
复制代码

 

 

C:QQ代理测试及网页转发

复制代码
ExpandedBlockStart.gif
             if  (isConnect) // QQ链接方式
            {
                
byte [] qqOkData  =  QQokProxyData();
                clientSocket.Send(qqOkData, 
0 , qqOkData.Length,  0 );
            }
            
else // 正常网页,直接转发
            {
                IPsocket.Send(sendBytes, 
0 );
            }
复制代码

 

函数分解:QQokProxyData

         private   byte [] QQokProxyData()
        {
            
string  data  =   " HTTP/1.0 200 Connection established " ; // 返回建立成功";
             return  System.Text.Encoding.ASCII.GetBytes(data);
        }

 

D:针对QQ需要进行重复来回的发送与接收

ExpandedBlockStart.gif
复制代码
           #region  QQ发送/接收中转请求
             
int  length  =   0 , count  =   0 ;
            
if  (isConnect)
            {

                System.Threading.Thread.Sleep( 400 ); // 关键时延
                
// 循环发送客户端请求,接收服务器返回
                DateTime start  =  DateTime.Now;
                
while  ( true )
                {
                    
if  (IPsocket.Available  ==   0   &&  clientSocket.Available  ==   0 )
                    {
                        
if  (((TimeSpan)(DateTime.Now  -  start)).TotalMinutes  >   15 )
                        {
                            
break ; // 掉线重拔处理
                        }
                    }
                    
else
                    {
                        start 
=  DateTime.Now;
                    }
                        
                    
                    
try
                    {
                        
while  (clientSocket.Available  !=   0 )
                        {
                            sendLength 
=  clientSocket.Receive(qqSendBytes, qqSendBytes.Length,  0 );
                            IPsocket.Send(qqSendBytes, sendLength, 
0 );
                            Write(
" 发送字节数:  "   +  sendLength.ToString());
                        }

                        System.Threading.Thread.Sleep(
500 );
                        
while  (IPsocket.Available  !=   0 )
                        {
                            recvLength 
=  IPsocket.Receive(qqRecvBytes, qqRecvBytes.Length,  0 );
                            clientSocket.Send(qqRecvBytes, recvLength, 
0 );
                            Write(
" 接收字节数:  "   +  recvLength.ToString());
                        }
                    }
                    
catch
                    {
                    }
                }
            }
            
else
            {
                
try
                {
                    
do
                    {
                        length 
=  IPsocket.Receive(recvBytes, count, IPsocket.Available,  0 );
                        count 
=  count  +  length;
                        Write(
" 接收转发请求返回的数据中... "   +  length);
                        System.Threading.Thread.Sleep(
200 ); // 关键点,请求太快数据接收不全
                    }
                    
while  (IPsocket.Available  >   0 );
                    clientSocket.Send(recvBytes, 
0 , count,  0 );
                }
                
catch (Exception err)
                {
                    Write(err.Message);
                }
            }
            
#endregion
复制代码

 

E:结束请求,关闭客户端Socket

复制代码
ExpandedBlockStart.gif
             #region  结束请求,关闭客户端Socket
            Write(
" 接收完成。返回客户端数据... "   +  count);
            CloseSocket(IPsocket);
            CloseSocket(clientSocket);
            recvBytes 
=   null ;
            Write(
" 本次请求完成,已关闭连接... " );
            Write(
" -----------------------------请求结束--------------------------- " );
            
#endregion
复制代码

 

结言:

本QQ代理软件在服务器上运行长达三个多月,使用过程未发现异常退出情况。当然前提就我一个人在用了 ~ 哈哈 ~

 

 

附以前写的几篇文章:

1:简单实现Http代理工具

2:简单实现Http代理工具--端口复用与QQ代理

3:简单实现Http代理工具--完善支持QQ代理

4:C# 控制台程序 不显示在任务栏 只在进程中显示

 

看本篇的时候也请支持一下我的开源框架:CYQ.Data 轻量数据层之路 框架开源系列 索引

相关文章
|
17天前
|
数据安全/隐私保护 Docker 容器
配置Harbor支持https功能实战篇
关于如何配置Harbor支持HTTPS功能的详细教程。
46 12
配置Harbor支持https功能实战篇
|
3月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
16天前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
28 3
Hadoop集群配置https实战案例
|
7天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
36 8
|
9天前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
16 1
|
1月前
|
缓存 负载均衡 安全
|
22天前
|
安全 Java Shell
【内网—内网转发】——http协议代理转发_reGeorg代理转发
【内网—内网转发】——http协议代理转发_reGeorg代理转发
18 3
|
1天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
9 0
|
2月前
|
数据采集 缓存 安全
2024年最佳http 代理 IP选择及其价格分析
2024年,多家服务商如快代理、123Proxy、巨量代理、IPIDEA等提供不同类型的代理IP,以满足数据采集、跨境电商等多种需求。
2024年最佳http 代理 IP选择及其价格分析

热门文章

最新文章