精华内容
下载资源
问答
  • HTTP代理原理

    2018-08-04 14:47:23
    当我们访问一个网站时,如果没有代理: 非代理:输入xx.com-->xx.com 但是用了代理服务器时,我们输入xx.com会先请求代理服务器,代理服务器可以把请求原封不动发给xx.com的服务器,也可以把请求劫持到另一...

    当我们访问一个网站时,如果没有代理:

    非代理:输入xx.com-->xx.com

    但是用了代理服务器时,我们输入xx.com会先请求代理服务器,代理服务器可以把请求原封不动发给xx.com的服务器,也可以把请求劫持到另一个yy.com的服务器

    代理:

    那么我们得到的结果就是,我们输入了xx.com的域名,得到的确实yy.com的内容.


    作用:解决开发时的跨域问题

    代理软件:

    Charles:基于MAC、依赖Java、收费

    Fiddler:Windows系统、依赖.net、免费

    展开全文
  • HTTP 代理原理与实现

    千次阅读 2019-04-16 14:07:48
    HTTP 代理原理与实现 HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。 假如我通过代理访问 A ...

    HTTP 代理原理与实现

    HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。

    假如我通过代理访问 A 网站,对于 A 来说,它会把代理当做客户端,完全察觉不到真正客户端的存在,这实现了隐藏客户端 IP 的目的。

    数据经过代理服务器后可能会经过修改,要小心数据有效性

    1var net = require('net')
    2var url = require('url')
    3var http = require('http')
    45var hostname = '127.0.0.1'
    6var port = '8888'
    7===================================
    这个服务从请求报文中解析出请求 URL 和其他必要参数,新建到服务端的请求,
    并把代理收到的请求转发给新建的请求,最后再把服务端响应返回给浏览器。
    ===================================
    8var request = (creq,cres)=>{
    9   │     console.log(creq.header);
    10var u = url.parse(creq.url);
    ===============
    重新构建请求
    ===============
    11var options = {
    12   │         hostname : u.hostname,
    13   │         port : u.port || 80,
    14   │         path : u.path,
    15   │         method : creq.method,
    16   │         headers : creq.headers,
    17};
    18==================
    得到响应
    ==================
    19var preq = http.request(options, (pres)=>{
    20   │         cres.writeHead(pres.statusCode,pres.headers);//估计是添加头
    21   │         pres.pipe(cres);//装入
    22}).on('error',function(e){
    23   │         cres.end();
    24});
    25   │     creq.pipe(preq);
    26}
    27==================================
    这个服务从 CONNECT 请求报文中解析出域名和端口,
    创建到服务端的 TCP 连接,并和 CONNECT 请求中的 TCP 连接串起来,
    最后再响应一个 Connection Established 响应。
    ===============================
    28var connect = (creq, csock) =>{
    29   │     console.log(creq.headers);
    3031var u = url.parse("http://"+creq.url);
    3233var psock = net.connect(u.port, u.hostname, ()=>{
    34   │         csock.write('HTTP/1.1 200 Connection Established\r\n\r\n');
    35   │         psock.pipe(csock);
    36}).on('error',(e)=>{
    37   │         csock.end();
    38});
    39   │     csock.pipe(psock);
    40}
    414243var proxy = http.createServer().on('request',request).on('connect',connect);
    44   │ proxy.listen(port, hostname,() =>{
    45   │     console.log("Proxy run in 127.0.0.1:8888");
    46})
    

    分析代码主要思路:
    使用nodejs,通过构建数据包进行http代理,实现转发,起到一个连接作用

    part 1
    发送的请求通过代理,代理解析出url的信息,与请求一起创建出新的包,发送给服务器,获得响应,在将响应转发给客户端
    part 2
    得到请求时,解析url的信息,得到域名和端口,服务器发出构建tcp链接的请求,之后将代理与服务器的tcp连接(a) 和 代理本身构建的tcp连接(b)结合,形成通路

    展开全文
  • HTTP代理原理以及HTTP隧道技术(经典)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    通过HTTP协议与代理服务器建立连接,协议信令中包含要连接到的远程主机的IP和端口号,如果有需要身份验证的话还需要加上授权信息,服务器收到信令后首先进行身份验证,通过后便与远程主机建立连接,连接成功之后会返回给客户端200,表示验证通过,就这么简单,下面是具体的信令格式:

    CONNECT 124.xxx.xxx.xx:443 HTTP/1.1 //建立http隧道要443端口
    Proxy-Connection: Keep-Alive   //客户端到服务器端的连接持续有效
    Content-Length: 0
    Host: 124.xxx.xxx.xx   //主机地址
    Proxy-Authorization:Basic YTph //身份验证信息
    User-Agent: OpenFetion //可以标识请求者的信息,如什么浏览器类型和版本、操作系统、使用语言等信息

         其中Proxy-Authorization是身份验证信息,Basic后面的字符串是用户名和密码组合后进行base64编码的结果,也就是对username:password进行base64编码。

        其实编码对安全性没什么意义,base64严格意义上都已经不能算是加密了,现在信息安全这么受重视的年代,不需要密钥的加密算法还是叫编码更贴切一些,抓到这种包之后瞬间就可以得到用户名和密码。

    HTTP/1.0 200 Connection established

        客户端收到收面的信令后表示成功建立连接,接下来要发送给远程主机的数据就可以发送给代理服务器了,代理服务器建立连接后会在根据IP地址和端口号对应的连接放入缓存,收到信令后再根据IP地址和端口号从缓存中找到对应的连接,将数据通过该连接转发出去。

                                   

        简单的说,HTTP隧道技术就是把所有要传送的数据全部封装到HTTP协议里进行传送,HTTP隧道技术几乎支持了所有的上网方式,如:拨号上网、ADSL、Cable Modem、NAT透明代理、HTTP的GET型和CONNECT型代理、SOCKS4代理、SOCKS5代理等。

        另外HTTP隧道技术也用于木马的制作,如把HTTP数据包里Agent段设为IE,对外端口为80,然后把自己的小马注入IE进程,哪个防火墙能分辨出它是木马在发送数据?

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Atitit http 代理原理 atiHttpProxy 大木马

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    Atitit. http 代理原理  atiHttpProxy  大木马

     

     

    1.面这张图可以清晰地阐明HttpProxy的实现原理:1

    2.代理服务器用途1

    3.其中流程具体如下:2

    4.设计规划3

    5.结束语4

     

     

    1. 面这张图可以清晰地阐明HttpProxy的实现原理: 


    2. 代理服务器用途

    代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据

    调试器

    数据搜集器

    木马病毒

    3. 其中流程具体如下:

     
    1、客户端通过浏览器向代理服务器发送HttpRequest(GET/POST);
    2、代理服务器读取请求头,抽取出请求的具体目标服务器HOST和PORT;
    3、代理服务器把请求头发送给目标服务器;
    4、代理服务器建立管道,供客户端和目标服务器通过两个Socket通信。

     

     

    不管以哪种方式应用代理服务器,其监控HTTP传输的过程总是如下:

    · 步骤一:内部的浏览器发送请求给代理服务器。请求的第一行包含了目标URL

    · 步骤二:代理服务器读取该URL,并把请求转发给合适的目标服务器。

    · 步骤三:代理服务器接收来自Internet目标机器的应答,把应答转发给合适的内部浏览器。

    例如,假设有一个企业的雇员试图访问www.cn.ibm.com网站。如果没有代理服务器,雇员的浏览器打开的Socket通向运行这个网站的Web服 务器,从Web服务器返回的数据也直接传递给雇员的浏览器。如果浏览器被配置成使用代理服务器,则请求首先到达代理服务器;随后,代理服务器从请求的第一 行提取目标URL,打开一个通向www.cn.ibm.comSocket。当www.cn.ibm.com返回应答时,代理服务器把应答转发给雇员的 浏览器。

    当然,代理服务器并非只适用于企业环境。作为一个开发者,拥有一个自己的代理服务器是一件很不错的事情。例如,我们可以用代理服务器来分析浏览器和Web服务器的交互过程。测试和解决Web应用中存在的问题时,这种功能是很有用的。我们甚至还可以同时使用多个代理服务器(大多数代理服务器允许多个服务器链 接在一起使用)。例如,我们可以有一个企业的代理服务器,再加上一个用Java编写的代理服务器,用来调试应用程序。但应该注意的是,代理服务器链上的每 一个服务器都会对性能产生一定的影响。

     

     

    4. 设计规划

    正如其名字所示,代理服务器只不过是一种特殊的服务器。和大多数服务器一样,如果要处理多个请求,代理服务器应该使用线程。下面是一个代理服务器的基本规划:

    1. 等待来自客户(Web浏览器)的请求。

    2. 启动一个新的线程,以处理客户连接请求。

    3. 读取浏览器请求的第一行(该行内容包含了请求的目标URL)。

    4. 分析请求的第一行内容,得到目标服务器的名字和端口。

    5. 打开一个通向目标服务器(或下一个代理服务器,如合适的话)的Socket

    6. 把请求的第一行发送到输出Socket

    7. 把请求的剩余部分发送到输出Socket

    8. 把目标Web服务器返回的数据发送给发出请求的浏览器。

    当然,如果考虑细节的话,情况会更复杂一些。实际上,这里主要有两个问题要考虑:第一,从Socket按行读取数据最适合进一步处理,但这会产生性能瓶 颈;第二,两个Socket之间的连接必需高效。有几种方法可以实现这两个目标,但每一种方法都有各自的代价。例如,如果要在数据进入的时候进行过滤,这 些数据最好按行读取;然而,大多数时候,当数据到达代理服务器时,立即把它转发出去更适合高效这一要求。另外,数据的发送和接收也可以使用多个独立的线 程,但大量地创建和拆除线程也会带来性能问题。因此,对于每一个请求,我们将用一个线程处理数据的接收和发送,同时在数据到达代理服务器时,尽可能快速地 把它转发出去。

     

     

     

    当代理服务器连接到Web服务器之后,我用一个简单的循环在两个Socket之间传递数据。这里可能出现一个问题,即如果没有可操作的数据,调用read 方法可能导致程序阻塞,从而挂起程序。为防止出现这个问题,我用setSoTimeout方法设置了Socket的超时时间(参见Listing 2)。这样,如果某个Socket不可用,另一个仍旧有机会进行处理,我不必创建一个新的线程。

     

     

    和所有线程对象一样,HttpProxy类的主要工作在run方法内完成(见Listing 2)。run方法实现了一个简单的状态机,从Web浏览器每次一个读取字符,持续这个过程直至有足够的信息找出目标Web服务器。然后,run打开一个通 向该Web服务器的Socket(如果有多个代理服务器被链接在一起,则run方法打开一个通向链里面下一个代理服务器的Socket)。打开Socket之后,run先把部分的请求写入Socket,然后调用pipe方法。pipe方法直接在两个Socket之间以最快的速度执行读写操作。

    如果数据规模很大,另外创建一个线程可能具有更高的效率;然而,当数据规模较小时,创建新线程所需要的开销会抵消它带来的好处。

    Listing 3显示了一个很简单的main方法,可以用来测试HttpProxy类。大部分的工作由一个静态的startProxy方法完成(见Listing 4)。这个方法用到了一种特殊的技术,允许一个静态成员创建HttpProxy类(或HttpProxy类的子类)的实例。它的基本思想是:把一个Class对象传递给startProxy类;然后,startProxy方法利用映像APIReflection API)和getDeclaredConstructor方法确定该Class对象的哪一个构造函数接受一个Socket参数;最 后,startProxy方法调用newInstance方法创建该Class对象。

     

     

    利用这种技术,我们可以在不创建startProxy方法定制版本的情况下,扩展HttpProxy类。要得到给定类的Class对象,只需在正常的名字 后面加上.class(如果有某个对象的一个实例,则代之以调用getClass方法)。由于我们把Class对象传递给了startProxy方法,所 以创建HttpProxy的派生类时,就不必再特意去修改startProxy。(下载代码中包含了一个派生得到的简单代理服务器)。

     

     

    5. 结束语

    利用派生类定制或调整代理服务器的行为有两种途径:修改主机的名字,或者捕获所有通过代理服务器的数据。processHostName方法允许代理服务 器分析和修改主机名字。如果启用了日志记录,代理服务器为每一个通过服务器的字符调用writeLog方法。如何处理这些信息完全由我们自己决定――可以 把它写入日志文件,可以把它输出到控制台,或进行任何其他满足我们要求的处理。writeLog输出中的一个Boolean标记指示出数据是来自浏览器还 是Web主机。

    和许多工具一样,代理服务器本身并不存在好或者坏的问题,关键在于如何使用它们。代理服务器可能被用于侵犯隐私,但也可以阻隔偷窥者和保护网络。即使代理 服务器和浏览器不在同一台机器上,我也乐意把代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据;未 来的代理服务器甚至还可能把页面从一种语言翻译成另一种语言……可能性永无止境。

     

     

    多线程Http代理服务器 Java实现 - 独上高楼 - ITeye技术网站.htm

    用Java开发代理服务器.htm

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block var foo = 'bar'; 

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    gantt
            dateFormat  YYYY-MM-DD
            title Adding GANTT diagram functionality to mermaid
            section 现有任务
            已完成               :done,    des1, 2014-01-06,2014-01-08
            进行中               :active,  des2, 2014-01-09, 3d
            计划一               :         des3, after des2, 5d
            计划二               :         des4, after des3, 5d
    
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • HTTP 代理原理及实现

    2016-07-18 11:27:00
    HTTP 代理原理及实现(一) 文章目录 普通代理 隧道代理 Web 代理是一种存在于网络中间的实体,提供各式各样的功能。现代网络系统中,Web 代理无处不在。我之前有关 HTTP 的博文中,多次提到了...
  • HTTP代理原理以及HTTP隧道技术

    千次阅读 2017-02-16 10:46:20
    HTTP代理原理 通过HTTP协议与代理服务器建立连接,协议信令中包含要连接到的远程主机的IP和端口号,如果有需要身份验证的话还需要加上授权信息,服务器收到信令后首先进行身份验证,通过后便与远程主机建立连接,...
  • 浅析HTTP代理原理

    2019-10-07 18:42:19
    关于HTTP代理的文章有很多,本文不再...本文主要介绍代理的事例,分析一个真实的案例来帮助理解HTTP代理原理HTTP代理原理 下面分析一个 http://iflow.uczzd.cn/iflow/api/v1/client_event?app=uc-iflow......
  • (一)HTTP代理原理 HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。 举个例子,当我们在浏览器...
  • basic coder » HTTP代理原理及Base64编码 basic coder » HTTP代理原理及Base64编码HTTP代理原理及Base64编码2010年4月14日 levin 发表评论 阅读评论 5,790 人阅读过有网友留言希望我在飞信的新...
  • 在上篇《HTTP 代理原理及实现(一)》里,我介绍了 HTTP 代理的两种形式,并用 Node.js 实现了一个可用的普通 / 隧道代理。普通代理可以用来承载 HTTP 流量;隧道代理可以用来承载任何 TCP 流量,包括 HTTP 和 HTTPS。...
  • HTTP代理原理探索

    千次阅读 2017-07-04 19:26:04
    如果没有 Web 代理HTTP 客户端就要直接与 HTTP 服务器进行对话。有了 Web 代理,客户端就可以与代理进行对话,然后由代理代表客户端与服务器进行交流。客户端仍然会完成对事务的处理,但它是通过代理服务器提供的...
  • http代理原理及实现

    2013-10-24 17:15:10
    实例http代理。有客户端和服务器端。Soket实现
  • 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规划3 5. 结束语4 1.面这张图可以清晰地阐明HttpProxy的...
  • 浅析HTTP代理原理--转

    2019-04-29 16:39:00
    关于HTTP代理的文章有很多,本文...本文主要介绍代理的事例,分析一个真实的案例来帮助理解HTTP代理原理HTTP代理原理 下面分析一个http://iflow.uczzd.cn/iflow/api/v1/client_event?app=uc-iflow...经过...
  • HTTP代理原理以及HTTP隧道技术(copy) http://hi.baidu.com/lifulinghan/blog/item/0e1d2754e4a46842d0090620.html 通过HTTP协议与代理服务器建立连接,协议信令中包含要连接到的远程主机的IP和...
  • HTTP代理原理及Base64编码

    千次阅读 2010-09-26 17:37:00
    HTTP代理原理及Base64编码2010年4月14日 | 分类: C/C++ | 标签: base64, C/C++, openfetion, 代理 网友留言希望我在飞信的新版本中加上代理功能,这两天折腾了一下,把HTTP代理给加上了,SOCKS...
  • http 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规划3 5. 结束语4 1.面这张图可以清晰地阐明HttpProxy的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,119
精华内容 1,247
关键字:

http代理原理