位置: IT常识 - 正文

HTTP Tunneling (HTTP Proxy Socket Client)

编辑:rootadmin
HTTP Tunneling (HTTP Proxy Socket Client)HTTP TunnelingHTTP is a text-based protocol to retreive Web

推荐整理分享HTTP Tunneling (HTTP Proxy Socket Client),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

HTTP Tunneling

HTTP is a text-based protocol to retreive Web pages through a Web browser. Mostly if you are on a LAN connection, you are behind a proxy server; this proxy server has one HTTP proxy running on some defined port. In your Internet Explorer's Connection option, you specify LAN settings as required. This proxy server is definitely running on a text-based protocol and you can only get HTTP-related data from the outside network, right!! Well, there is a small loophole from which you can go through HTTP and connect to the outside world and get any data you want in binary protocol, or even your own protocol. It's through HTTPS.

HTTPS Explanation

In HTTPS, data is transferred from browser to server and server to browser in a secure manner. It's a binary protocol; when it goes through a proxy, the proxy doesn't understand anything. The proxy just allows a binary stream to open and let both server and client exchange the data. Now, we can fool the proxy server and connect to any server and exchange data. The proxy server will think that we doing some secure HTTP session.

For HTTPS, your browser connects to a proxyserver and sends a command.

CONNECT neurospeech.com:443HTTP/1.0<CR><LF>HOST neurospeech.com:443<CR><LF>[... other HTTP header lines ending with<CR><LF>if required]><CR><LF>// Last Empty Line

Then, the proxy server treats this as some HTTP Secure Session, and opens a binary stream to the required server and port as defined. If a connection established, the proxy server returns the following response:

HTTP/1.0200ConnectionEstablished<CR><LF>[.... other HTTP header lines ending with<CR><LF>..ignore all of them]<CR><LF>// Last Empty Line

Now, the browser is connected to the end server and can exchange data in both a binary and secure form.

How to Do This

Now, it's your program's turn to fool the proxy server and behave as Internet Explorer behaves for Secure HTTP.

Connect to Proxy Server first.Issue CONNECT Host:Port HTTP/1.1<CR><LF>.Issue <CR><LF>.Wait for a line of response. If it contains HTTP/1.X 200 , the connection is successful.Read further lines of response until you receive an empty line.Now, you are connected to outside world through a proxy. Do any data exchange you want.Sample Source Code// You need to connect to mail.yahoo.com on port 25// Through a proxy on 192.0.1.1, on HTTP Proxy 4480// CSocketClient is Socket wrapping class// When you apply operator << on CString, it writes CString// To Socket ending with CRLF// When you apply operator >> on CString, it receives// a Line of response from socket until CRLFtry{CStringRequest,Response;CSocketClientClient;Client.ConnectTo("192.0.1.1",4480);// Issue CONNECT CommandRequest="CONNECT mail.yahoo.com:25 HTTP/1.0";Client<<Request;// Issue empty lineRequest="";Client<<Request;// Receive Response From ServerClient>>Response;// Ignore HTTP Versionint n =Response.Find(' ');Response=Response.Mid(n+1);// Http Response Must be 200 onlyif(Response.Left(3)!="200"){// Connection refused from HTTP Proxy ServerAfxMessageBox(Response);}// Read Response Lines until you receive an empty line.do{Client>>Response;if(Response.IsEmpty())break;}while(true);// Coooooooool.... Now connected to mail.yahoo.com:25// Do further SMTP Protocol here..}catch(CSocketException* pE){ pE->ReportError();}Library Source CodeHTTP Tunneling (HTTP Proxy Socket Client)

The Dns.h file contains all DNS-related source code. It uses other libraries, as SocketEx.h, SocketClient.h, and NeuroBuffer.h.

CSocketEx

Socket functions as a wrapper class. (CSocket is very heavy and unreliable if you don't have the exact idea of how it works.) All the functions are of same name as CSocket. You can use this class directly.

CSocketClient

Derived from CSocketEx and throws proper exceptions with details of Winsock errors. It defines two operators, >> and <<, for easy sending and receiving; it also changes network to host and host to network order of bytes if required.

CHttpProxySocketClient

Derived from CSocketClient, you can call the SetProxySettings(ProxyServer,Port) method and set proxy settings. Then, you can connect to the desired host and port as you need. The ConnectTo method is overridden and it automatically implements an HTTP proxy protocol and gives you a connection without any hassle.

How to Use CHttpProxySocketClient// e.g. You need to connect to mail.yahoo.com on port 25// Through a proxy on 192.0.1.1, on HTTP Proxy 4480// CSocketClient is Socket wrapping class// When you apply operator << on CString, it writes CString// To Socket ending with CRLF// When you apply operator >> on CString, it receives// Line of response from socket until CRLFtry{CHttpProxySocketClientClient;Client.SetProxySettings("192.0.1.1",1979);// Connect to server mail.yahoo.com on port 25Client.ConnectTo("mail.yahoo.com",25);// You now have access to mail.yahoo.com on port 25// If you do not call SetProxySettings, then// you are connected to mail.yahoo.com directly if// you have direct access, so always use// CHttpProxySocketClient and no need to do any// extra coding.}catch(CSocketException* pE){ pE->ReportError();}

Note: I usually don't program in the form of .h and .cpp different files, because using them the next time somewhere else is a big problem because you must move both files here and there. So, I put all the code in my .h file only; I don't write to the .cpp file unless it's required. You need to copy only the SocketEx.h, SocketClient.h, and HttpProxySocket.h files into your project's directory, and add line

#include"HttpProxySocket.h"

after your

#if !defined(.....

and so forth code of your Visual Studio-generated file. If you put anything above this, you will get n number of errors.

Downloads

Download source - 17 Kb

Note: I usually don't program in the form of .h and .cpp different files, because using them the next time somewhere else is a big problem because you must move both files here and there. So, I put all the code in my .h file only; I don't write to the .cpp file unless it's required. You need to copy only the SocketEx.h, SocketClient.h, and HttpProxySocket.h files into your project's directory, and add line

#include"HttpProxySocket.h"

after your

#if !defined(.....

and so forth code of your Visual Studio-generated file. If you put anything above this, you will get n number of errors.

本文链接地址:https://www.jiuchutong.com/zhishi/304101.html 转载请保留说明!

上一篇:实现自己的http server loop_in_codes C++博客

下一篇:驱动开发:内核LDE64引擎计算汇编长度(驱动开发做得长久吗)

  • 股权转让中土地房产占比较大时怎么交税
  • 企业所得税季报和年报的区别
  • 境外承包工程项下资金
  • 研发费用加计扣除是什么意思啊
  • 学校食堂支出
  • 残保金申报在哪申报
  • 小企业商品销售的入账价格
  • 个人交的社保发票怎么开
  • 未分配利润借方表示增加还是减少
  • 车贷抵押金计入会计科目?
  • 收取物业费不开发票举报电话
  • 购买债券取得的利息收入计入什么科目
  • 货物抵扣货款分录
  • 银行结汇汇兑损益的会计分录怎么写?
  • 酒店租金计入什么会计科目
  • 出口发票税率怎么开
  • 个人所得税期末为负数审计调整
  • 企业所得税减半征收计算公式
  • 咨询费 税
  • 简易征收货物的运费
  • 个税合理避税的意义
  • 公司按月支付住房公积金
  • 完税证明可以作为发票吗
  • 收取会员费收入会计分录
  • 无形资产有使用期限
  • 哪些收入应计入成本
  • ios路由设计
  • 投入法和产出法的确定属于会计估计变更吗
  • 免征的增值税需要纳税调整吗
  • 外地的社保在本地个税扣除
  • 股权折价转让
  • PHP:spl_autoload_call()的用法_spl函数
  • 房屋租金应缴纳多少
  • 法罗群岛知乎
  • pytorch f
  • vue全家桶插件有哪些
  • 银行询证函费用减免
  • php获取当前页面
  • 专利代理服务费计入什么科目
  • Vue3:探讨一下mixin
  • web爬虫视频教程
  • 微信php开发包
  • 投资入股的会计处理
  • 商品流通企业物流成本的具体构成包括()
  • 焊材领用发放管理
  • python中numpy数组和列表的区别
  • 残保金 滞纳金
  • 销售清单需要盖什么章子
  • mysql数据控制语句
  • centos php-fpm
  • 研发费用 汇算清缴
  • 事业单位收到财政拨款会计分录
  • 厂家给经销商的补贴怎么开票
  • 流动比率与速动比率下降说明什么
  • 如何计算债券实际收益
  • 员工借款怎么处理
  • 企业银行存款的流动性强于存货
  • 记账凭证必须具备的基本内容
  • 哪些个体户要报残保金
  • 企业新增的残疾税
  • 银行承兑汇票能拆分背书吗
  • 脚手架租赁费发票内容开劳务可以吗
  • 初中学历学会计难不难
  • linux中字符设备有哪些
  • 设置使用资源管理器查看文件时,显示已知文件的扩展名
  • mm server conection failed
  • Win7电脑屏幕横过来了怎么恢复
  • win8安装应用商店
  • Extjs4 GridPanel 的几种样式使用介绍
  • 自动关机的
  • Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent错误的记录。
  • 吉林省国家税务局官网
  • 江苏无锡2023年GDP
  • 新一代票据系统怎么开通
  • 南京税务局几点下班
  • 锂电池缴纳消费增值税吗
  • 数字经济与实体经济融合发展的理论探索
  • 小规模纳税人租赁收入增值税税率是多少
  • 个人所得税税率表及速算扣除数
  • 车辆购置税交了怎么查询不到
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设