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

简介:
复制代码
         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及建立连接

复制代码
           #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代理测试及网页转发

复制代码
             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需要进行重复来回的发送与接收

复制代码
           #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

复制代码
             #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 轻量数据层之路 框架开源系列 索引

相关文章
|
1月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
2月前
|
缓存 JavaScript 前端开发
对比PAC代理与传统HTTP代理的不同
总结起来,PASSIVE 提供了基础且广泛兼容解决方案而PASSIve 则提供高级灵活控制满足特殊需求但同时也带来了额外维护负担及潜再技术挑战
248 4
|
3月前
|
数据采集 负载均衡 监控
巨量http,全民ip,芝麻http,太阳http,天启代理,大麦代理,2025最新测评隧道代理选谁?
隧道代理通过云端自动切换IP,简化了传统代理的复杂操作,成为数据采集、广告监测等领域的高效工具。本文解析其工作原理,探讨选型要点,助你找到最适合的方案。
|
3月前
|
运维 网络协议 安全
为什么经过IPSec隧道后HTTPS会访问不通?一次隧道环境下的实战分析
本文介绍了一个典型的 HTTPS 无法访问问题的排查过程。问题表现为 HTTP 正常而 HTTPS 无法打开,最终发现是由于 MTU 设置不当导致报文被丢弃。HTTPS 因禁止分片,对 MTU 更敏感。解决方案包括调整 MSS 或中间设备干预。
|
4月前
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
244 8
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
983 23
|
5月前
|
存储 缓存 前端开发
http协议调试代理工具,Fiddler免费版下载,抓包工具使用教程
Fiddler是一款功能强大的HTTP协议调试代理工具,能记录并检查电脑与互联网间的HTTP通信,支持断点设置和数据编辑。相比其他网络调试器,Fiddler操作更简单且用户友好,支持查看Cookie、HTML、JS、CSS等文件内容。它还具备HTTPS抓包、过滤设置、统计页面总重量等功能,适用于安全测试与功能测试。通过插件扩展,用户可自定义视图或分析缓存行为。支持多种HTTP请求方法(如GET、POST等)及状态码分类(1xx-5xx),是开发者调试网络请求的得力工具。同类工具有HttpWatch、Firebug、Wireshark等。
540 1
|
6月前
|
数据采集 监控 安全
HTTP代理和IP代理的不同点及代理IP能带来的好处分析
总的来说,无论是HTTP代理还是IP代理,选择哪一种主要还是要看你的需求和使用场景,同时也要为可能的风险做好准备。
179 9
|
6月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
246 1
|
7月前
|
缓存 人工智能 边缘计算
HTTP代理:网页加速的隐形引擎
本文深入探讨HTTP代理在提升网页加载速度中的核心作用与技术原理。通过请求中转、协议优化及传输层加速,结合智能缓存、动态压缩、全球负载均衡和协议升级四大黑科技,实现显著性能提升。同时分析其潜在代价与挑战,并展望边缘计算、AI驱动等未来趋势,为选型提供实用指南。
359 10

热门文章

最新文章