ftp 客户端 使用http代理 源码_代理服务器连接HTTPS过程

说到HTTPS代理很多人瞬间就会联想到HTTPS的各种证书和各种加密,觉得很高端很复杂的样子。其实不然,代理服务器不需要配置证书、也不需要处理任何加密。因为HTTPS代理是通过Web隧道(Web tunnel)工作的。

Web隧道允许用户通过HTTP连接发送非HTTP流量(例如FTP,Telnet,SMTP),这就使得那些使用非HTTP协议的应用程序可以通过HTTP代理工作了。你现在应该就明白了为什么QQ可用设置使用HTTP代理工作。Web隧道这么强大,但它并不复杂。

Web隧道是用HTTP协议的CONNECT方法建立起来的。CONNECT方法不是HTTP/1.1核心规范的一部分,但确是一种得到广泛应用的扩展。客户端通过CONNECT方法请求代理服务器创建一条到达任意目的服务器和端口的TCP链接,代理服务器仅对客户端和服务器之间的后续数据进行盲转发(只是转发,不关心、也不懂发送的内容是什么)。

建立Web隧道的详细步骤如下:

1) 客户端通过HTTP协议发送一条CONNECT方法的请求给代理服务器,告知代理服务器需要连接的主机和端口。

例如:

CONNECT www.alipay.com:443 HTTP/1.1

User-agent: Mozilla/5.0

在本例中客户端通过CONNECT方法请求代理服务器打开一条到www.alipay.com主机443端口的TCP链接。

2) 代理服务器一旦建立了和目标主机(上例中的www.alipay.com:443)TCP连接,就会回送一条HTTP 200 Connection Established应答给客户端。

例如:

HTTP/1.1 200 Connection Established

Poryx-Agent: Squid/3.2

3) 此时隧道就建立起来了。客户端通过该HTTP隧道发送的所有数据都会被代理服务器(通过之前建立起来的与目标主机的TCP连接)原封不动的转发给目标服务器。目标服务器发送的所有数据也会被代理服务器原封不动的转发给客户端。注意:是原封不动的转发,代理服务器并不需要知道内容的含义,也不会尝试去对内容进行解析。

d9d0f9f675d9bbba6cd6c77be279c43e.png

http://www.site-digger.com/html/articles/20151203/107.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python解zuobiaoxi方程_Python还能解决数学相关问题?大学生:以后就靠他了,事半功倍...

问题背景高等数学应用非常广,基本上涉及到函数的地方都要用到微积分,还有在几何方面也是如此,计算机的应用让我们能简单快速处理各种高等数学中的计算,比如极限、导数、积分、微分方程等的计算。实验目的使用 Python 通过计算与作…

Android版:验证手机号码的正则表达式 (转)

/** * 验证手机格式 */ public static boolean isMobileNO(String mobiles) { /* 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 联通:130、131、132、152、155、156、185、186 电信:133、…

基础正则表达式介绍与练习

基础正则表达式介绍与练习 一、什么是正则表达式 在做文字处理或编写程序时,用到查找、替换等功能,使用正则表达式能够简单快捷的完成目标。简单而言,正则表达式通过一些特殊符号的帮助,使用户可以轻松快捷的完成查找、删除、替换…

android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片

不知有没有小伙伴用过canvas合成图片,然后爆炸报错截图尼玛,然后各种搜索,不外乎以下几种坑爹处理方案:后端处理,比如Access-Control-Allow-Origin "*"(要是请求到其他网站的图片就不适用了,比如…

水晶报表如何查看sql_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...

EasyReport是一个简单易用的Web报表工具,它的主要功能是把SQL语句查询出的数据转换成报表页面, 同时支持表格的跨行(RowSpan)与跨列(ColSpan)配置。 同时它还支持报表Excel导出、图表显示及固定表头与左边列的功能。功能介绍本工具从数据库(MySQL,Oracle,SQLServer,…

python 三维向量 交互_Blender实现Nature of Code1.5单位向量[Nature of Node 004]

【Nature of Node #004】Blender创意编程进阶应用:实现Nature of CodeNature of Code 1.5, Unit Vector (Normalize)背景介绍这个系列“Nature of Node”,是专门用Blender的Node(节点)方式来实现Nature of Code。用到一个Blender插…

Sitemesh3的使用及配置

1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术。参考:百度百科,相关类似技术:Apache Tiles。 官网:http://wiki.sitemesh.org/wi…

等保项目流程

等级保护:直属管理公安局 产品必须通过公安局安全许可证分级保护:直属管理保密局 产品必须通过保密局销售许可证等级保护:一般分为5级,目前最高用到是等保4级总概:定级——前期调研——总…

鸿蒙系统r如何升级,高歌猛进,鸿蒙系统升级机型再次确认,花粉:终等到!...

虽然华为手机现在的压力非常大,但是在前进的道路上,真的充满了乐观精神,而且现在也算是一路高歌猛进了,发展路线开始加快了许多,无论是新机还是系统,都有着非常多的新消息。因为华为手机的实力很强&#xf…

Oracle快速备份表数据

Oracle数据库中备份表数据。 例子: 1 create table table_name_bak as select * from table_name 1 create table table_name_bak as select * from table_name 2 where table_name.date between TO_DATE(2018-09-25,yyyy-MM-dd) and TO_DATE(2018-09-26,yyyy-MM-d…

git pull

今天在服务器上git pull是出现以下错误: error: Your local changes to the following files would be overwritten by merge: application/config/config.php application/controllers/home.php Please, commit your changes or stash them before you can merge. …

jq控制div是否展示_jQuery控制多个DIV的显示和隐藏

问题补充&#xff1a;这是我写的JSfunction Previous(){for(var i1;i<3;i){if(document.getElementById("d"i).style.display"block"){document.getElementById("d"(i-1)).style.display"block";}document.getElementById("d&…

C# 线程间不能调用剪切板的问题

最近做一个项目&#xff0c;需要用到线程&#xff0c;而且要用到剪切板&#xff0c;创建了一个子线程之后发现在子线程中剪切板上获取不到数据&#xff0c;当时特别纳闷&#xff0c;上网查资料&#xff0c;最后终于搞定&#xff0c;现将解决方法归纳如下&#xff1a; 第一步&am…

android studio背景模糊_[Android翻译]CameraX:过去、现在和未来的一瞥

CameraX是一个未捆绑的Android Jetpack库&#xff0c;它可以帮助你在Android应用中轻松添加摄像头功能。传统上&#xff0c;由于Android设备种类繁多&#xff0c;编程模型复杂&#xff0c;在Android上构建具有相机功能的应用程序非常困难。现在成千上万的开发者都在使用CameraX…

html页面根据分辨率缩放,html2Canvas根据不同分辨率,生成pdf内容自适应

根据屏幕大小不同&#xff0c;页面内容自适应并一页展示&#xff0c;应该如何实现// 导出页面为PDF格式import html2Canvas from html2canvasimport JsPDF from jspdfexport default{install (Vue, options) {Vue.prototype.getPdf function () {setTimeout(() > {var titl…

【agc002f】Leftmost Ball(动态规划)

【agc002f】Leftmost Ball&#xff08;动态规划&#xff09; 题面 atcoder洛谷 题解 我们从前往后依次把每个颜色按顺序来放&#xff0c;那么如果当前放的是某种颜色的第一个球&#xff0c;那么放的就会变成\(0\)号颜色&#xff0c;所以无论何时&#xff0c;\(0\)号颜色的数量不…

VS2010中的快捷键

一. VS2010中的快捷键 1&#xff1a; Ctrl Enter &#xff08;在光标指定位置的上 K C &#xff08;注释&#xff09; Ctrl E U &#xff08;取消注释&#xff09;  <>  Ctrl K U &#xff08;取消注释&#xff09; 5&#xff1a; Tab &#xff08;增加缩进&a…

export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

高阶函数的定义在《javascript设计模式和开发实践》中是这样定义的。函数可以作为参数被传递&#xff1b;函数可以作为返回值输出。结合这两个特点&#xff0c;首先想到的肯定是回调函数&#xff0c;回调函数也是高阶函数的一种&#xff0c;除了回调函数&#xff0c;还有很多的…

Javascript构造函数的继承

仅供学习参考&#xff0c;原文链接&#xff1a;http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介绍的是&#xff0c;对象之间的"继承"的五种方法。 比如&#xff0c;现在有一个"动物"对象的构造函数。 funct…

python输入字符串str_python字符串(str)

#value "raitOrEi"#v value.capitalize()#首字母大写#print(v)#v1 v.casefold()#全部变小写&#xff0c;不只是英文的&#xff0c;其他语言特殊的大小写也变换#print(v1)#v2 v.lower()#只是英文变小写#print(v2)#设置宽度&#xff0c;并将内容居中#20 代指总长度…