精讲RestTemplate第10篇-使用代理做为跳板发送请求

本文是精讲RestTemplate第10篇,前篇的blog访问地址以下:html

本节咱们要为你们介绍一下,如何在使用RestTemplate发送请求的时候使用代理Proxy。至于为何要使用代理,给你们举一个简单的例子:一些作过爬虫的同窗可能都知道,当爬虫高频的屡次访问一个网站数据,可能致使请求客户端Ip被封锁的可能。不少状况下,作爬虫的企业就维护一个代理IP池,每发送一次请求,就更换一次IP。
代理Proxy做为跳板成为服务的直接访问者,代理使用者(真正的客户端)是间接访问服务。这样在服务端看来,每次请求是代理发出的,从代理IP池中一直更换代理发送请求,这样可以下降IP封锁的可能。vue

咱们本节就来为你们介绍,做为一个代理使用者,该如何使用RestTemplate发送请求的时候使用代理Proxy。java

1、搭建一个代理服务器

笔者只从知识的层面去讲解使用方法,因此不作蝇营狗苟的勾当。代理服务器仍是由我本身来搭建用来测试,在个人一个CentOS服务器上安装tinyproxy,tinyproxy能够提供代理服务。spring

# 安装tinyproxy 命令
sudo yum install tinyproxy -y

编辑tinyproxy的配置文件vim /etc/tinyproxy/tinyproxy.conf。为该代理配置容许访问的使用者客户端ip,也就是我家的ip,因此这个代理服务只能我用,其余人用不了。vim

# 代理服务端口
Port 1080
# 容许哪一个客户端使用该代理程序?
Allow xxx.xxx.xxx.xxx

启动tinyproxy提供代理服务,最好检查一下防火墙是否开放了1080端口。后端

systemctl start tinyproxy.service

2、用于测试的服务端

  • 咱们此次要访问的服务端是:http://www.httpbin.org, 这个网站是提供在线的HTTP访问服务的网站。咱们能够用它进行测试。
  • http://www.httpbin.org/ip是咱们本次要访问的服务,响应结果是访问者的IP。

我在家里使用电脑访问这个服务的时候结果以下:

上图没有使用代理,因此返回的是我家的ip。若是我使用代理访问,返回结果应该是proxy代理服务器的ip地址。springboot

3、代理使用者RestTemplate

个人第一小节中的代理服务器的ip是88.99.10.251,tinyproxy代理服务端口1080。下文代码经过SimpleClientHttpRequestFactory设置访问代理服务器

@SpringBootTest
class ProxyTests {

   @Resource
   private RestTemplate restTemplate;

   @Test
   void testProxyIp() {

      String url = "http://www.httpbin.org/ip";

      SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
      requestFactory.setProxy(
         new Proxy(
            Proxy.Type.HTTP,
            new InetSocketAddress("88.99.10.251", 1080)  //设置代理服务
         )
      );
      restTemplate.setRequestFactory(requestFactory);
      //发送请求
      String result = restTemplate.getForObject(url, String.class);
      System.out.println(result);  //打印响应结果
   }

}

代理类型能够是HTTP也能够是SOCKS。下图是 "http://www.httpbin.org/ip" 的请求响应结果,返回的是代理服务器的ip,而不是我家里的ip。说明咱们为RestTemplate 设置的代理生效了。前后端分离

欢迎关注个人博客,里面有不少精品合集

  • 本文转载注明出处(必须带链接,不能只转文字):字母哥博客

以为对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创做动力! 。另外,笔者最近一段时间输出了以下的精品内容,期待您的关注。微服务

相关文章
相关标签/搜索