zoukankan      html  css  js  c++  java
  • Linux curl命令使用代理、以及代理种类介绍

       本文转自http://aiezu.com/article/linux_curl_proxy_http_socks.html,感谢作者
      有时出于个人隐私的原因,我们希望隐藏自己的IP,让http服务器无法记录我们访问过它,这时我们可以使用代理服务器。
      代理服务器(Proxy Server)是工作在浏览器与http服务器之间的一个服务应用,所有经过代理服务器的http请求,都会被转发到对应的http服务器上。
      当然,除了http可以使用代理外,https、ftp、RTSP、pop3等协议同样可以使用代理访问,不过本文介绍的是支持http、https协议访问的代理。
      

    一、代理服务器分类:

      我们比较常用、支持http(s)协议代理主要分为两大类:http代理和socks代理,见下表:
    大类小类子类描述
    http代理 http代理
    https代理
    透明代理 http服务器知道浏览器端使用了代理,并能获取浏览器端原始IP;
    匿名代理 http服务器知道浏览器端使用了代理,但无法获取浏览器端原始IP;
    高匿名代理 http服务器不知道浏览器端使用了代理,且无法获取浏览器端原始IP;
    SOCKS代理 SOCKS4 被称为全能代
    理,支持http
    和其他协议
    只支持TCP应用;
    SOCKS4A 支持TCP应用;支持服务器端域名解析;
    SOCKS5 支持TCP和UDP应用;支持服务器端域名解析;
    支持多种身份验证;支持IPV6;
     

    二、Linux curl命令代理设置参数:

      linux curl命令可以使用下面参数设置http(s)代理、socks代理,已经设置它们的用户名、密码以及认证方式:
    参数用法
    -x host:port
    -x [protocol://[user:pwd@]host[:port]
    --proxy [protocol://[user:pwd@]host[:port]
    使用HTTP代理访问;如果未指定端口,默认使用8080端口;
    protocol默认为http_proxy,其他可能的值包括:
    http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
    如:
    --proxy 8.8.8.8:8080;
    -x "http_proxy://aiezu:123@aiezu.com:80"
    --socks4 <host[:port]>
    --socks4a <host[:port]>
    --socks5 <host[:port]>
    使用SOCKS4代理;
    使用SOCKS4A代理;
    使用SOCKS5代理;
    此参数会覆盖“-x”参数;
    --proxy-anyauth
    --proxy-basic
    --proxy-diges
    --proxy-negotiate
    --proxy-ntlm
    代理认证方式,参考:
    --anyauth
    --basic
    --diges
    --negotiate
    --ntlm
    -U <user:password>
    --proxy-user <user:password>
    设置代理的用户名和密码;

     

    三、Linux curl命令设置代理举例:

    1、linux curl命令设置http代理:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 指定http代理IP和端口
    curl -x 113.185.19.192:80 http://aiezu.com/test.php
    curl --proxy 113.185.19.192:80 http://aiezu.com/test.php
     
    #指定为http代理
    curl -x http_proxy://113.185.19.192:80 http://aiezu.com/test.php
     
    #指定为https代理
    curl -x HTTPS_PROXY://113.185.19.192:80 http://aiezu.com/test.php
     
    #指定代理用户名和密码,basic认证方式
    curl -x aiezu:123456@113.185.19.192:80 http://aiezu.com/test.php
    curl -x 113.185.19.192:80 -U aiezu:123456 http://aiezu.com/test.php
    curl -x 113.185.19.192:80 --proxy-user aiezu:123456 http://aiezu.com/test.php
     
    #指定代理用户名和密码,ntlm认证方式
    curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http://aiezu.com/test.php
     
    #指定代理协议、用户名和密码,basic认证方式
    curl -x http_proxy://aiezu:123456@113.185.19.192:80 http://aiezu.com/test.php
     

    2、Linux curl命令设置socks代理:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #使用socks4代理,无需认证方式
    curl --socks4 122.192.32.76:7280 http://aiezu.com/test.php
    curl -x socks4://122.192.32.76:7280 http://aiezu.com/test.php
     
    #使用socks4a代理,无需认证方式
    curl --socks4a 122.192.32.76:7280 http://aiezu.com/test.php
    curl -x socks4a://122.192.32.76:7280 http://aiezu.com/test.php
     
    #使用socks5代理,basic认证方式
    curl --socks5 122.192.32.76:7280 -U aiezu:123456 http://aiezu.com/test.php
    curl -x socks5://aiezu:123456@122.192.32.76:7280 http://aiezu.com/test.php
     
    #使用socks5代理,basic认证方式,ntlm认证方式
    curl -x socks5://aiezu:123456@122.192.32.76:7280 --proxy-ntlm http://aiezu.com/test.php
     

    四、测试代理的隐匿度:

    1、测试前准备:

      测试前,我们先在网站根目录也一个php页面“test.php”,用于输出http服务器接收到的访客IP地址信息,"test.php"测试页的代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $array array('HTTP_USER_AGENT''HTTP_HOST''HTTP_ACCEPT''PATH''SERVER_SIGNATURE''SERVER_SOFTWARE''SERVER_NAME''SERVER_ADDR''SERVER_PORT''DOCUMENT_ROOT''SERVER_ADMIN''SCRIPT_FILENAME''REMOTE_PORT''GATEWAY_INTERFACE''SERVER_PROTOCOL''REQUEST_METHOD''QUERY_STRING''REQUEST_URI''SCRIPT_NAME''PHP_SELF''REQUEST_TIME');
    //  将 $_SERVER 数组赋予 $srv数组;
    $srv $_SERVER;
    // 释放掉 $srv中不相关的键
    foreach($array as $name ) {
        unset($srv$name ]);
    }
    print_r($srv);
      保存好"test.php"后,然后我们通过不用代理,和使用透明代理、匿名代理、高匿名代理、SOCKS分别去访问,看页面输出的内容结果。
      

    2、测试使用不同代理输出结果:

      ①.  通过linux curl不使用代理访问:
    1
    2
    3
    4
    5
    [root@aiezu.com ~]# curl http://aiezu.com/test.php
    Array
    (
        [REMOTE_ADDR] => 114.112.104.126
    )
      可以看出,http服务器获取到的"REMOTE_ADDR"IP地址为"114.112.104.126",此IP地址就是客户端lcurl的真实IP地址。 
     
      ②. 通过linux curl命令使用http透明代理访问:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@aiezu.com ~]# curl -x 37.139.9.11:80 http://aiezu.com/test.php
    Array
    (
        [HTTP_VIA] => 1.1 ThunderVPN (squid/3.3.8)
        [HTTP_X_FORWARDED_FOR] => 114.112.104.126
        [HTTP_CACHE_CONTROL] => max-age=259200
        [HTTP_CONNECTION] => keep-alive
        [REMOTE_ADDR] => 37.139.9.11
    )
      可以看出REMOTE_ADDR字段变成了代理服务器的IP地址,同时真实IP地址也能从HTTP_X_FORWARDED_FOR字段获取到,还多了一个“HTTP_VIA”字段,可以看出出代理并不能隐藏真实IP,而且也会让http服务器自动浏览器端使用了代理。
     
      ③. 通过linux curl命令使用http匿名代理访问:
    1
    2
    3
    4
    5
    6
    [root@aiezu.com ~]# curl -x 60.21.209.114:8080 http://aiezu.com/test.php
    Array
    (
        [HTTP_PROXY_CONNECTION] => Keep-Alive
        [REMOTE_ADDR] => 60.21.209.114
    )
      从上面可以看出,REMOTE_ADDR字段变成了代理服务器的IP地址,而且在响应不包含原来的真实IP地址,但是多了HTTP_PROXY_CONNECTION,能判断出使用了代理,得出结论此浏览器客户端使用了匿名代理。

      ④. 通过linux curl命令使用http高匿名代理访问:
    1
    2
    3
    4
    5
    [root@aiezu.com ~]# curl -x 114.232.1.13:8088 http://aiezu.com/test.php
    Array
    (
        [REMOTE_ADDR] => 114.232.1.13
    )
      这次我们惊奇的发现,REMOTE_ADDR同样变成了代理的IP地址,同时不留下任何残留证据证明使用了代理,可以得出结论,这就是传说中的高匿名代理。
      
      ④. 通过linux curl命令使用socks5代理访问:
    1
    2
    3
    4
    5
    [root@aiezu.com ~]# curl --socks5 122.192.32.76:7280 http://aiezu.com/test.php
    Array
    (
        [REMOTE_ADDR] => 180.96.54.198
    )
      可以看出此SOCKS5代理也是高匿名代理。
  • 相关阅读:
    参数传递(值传递与引用传递)
    存入redis中的java对象都需要序列化
    windows环境Apache服务器启动失败的原因
    IDEA/Eclipse安装 Alibaba Java Coding Guidelines 插件
    使用freemarker对模板进行渲染
    java使用freemarker作为模板导出Excel表格
    mybatis 中 foreach collection的三种用法
    利用freemarker导出页面格式复杂的excel
    mysql limit和offset用法
    设计模式之二十一:中介者模式(Mediator)
  • 原文地址:https://www.cnblogs.com/exmyth/p/15515507.html
Copyright © 2011-2022 走看看