运维开发网

Rest使用代理作为请求的跳板

运维开发网 https://www.qedev.com 2022-06-29 21:31 出处:网络
这篇文章主要为大家介绍了RestTemplate使用代理proxy作为跳板发送请求的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

这篇文章主要为大家介绍了RestTemplate使用代理proxy作为跳板发送请求的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步


前言

在本节中,我们将向您介绍在使用RestTemplate发送请求时如何使用代理。至于为什么要用代理,我举个简单的例子:有做过爬虫的同学可能知道,当爬虫高频率多次访问一个网站数据时,请求客户端的Ip可能会被屏蔽。在许多情况下,制造爬虫的公司维护一个代理IP池,并且每次他们发送请求时改变IP。作为跳板,代理成为服务的直接访问者,而代理用户(真实客户端)间接访问服务。这样,从服务器的角度来看,每个请求都是由一个代理发送的,代理总是从代理IP池中变化来发送请求,可以降低IP阻塞的可能性。


在本节中,我们将向您介绍,作为一个代理用户,如何使用RestTemplate在发送请求时使用Proxy代理。


一、搭建一个代理服务器

我只是从知识层面解释如何使用,所以不做任何盈利的事情。代理还是自己搭建测试用的。在我的一台CentOS服务器上安装tinyproxy,tinyproxy可以提供代理服务。

#安装tinyproxy命令sudoyuminstalltinyproxy-y

编辑tinyproxy的配置文件vim/etc/tiny proxy/tiny proxy . conf。为这个代理配置允许访问的用户的客户端ip,也就是我家的ip,这样这个代理服务只能我一个人使用,其他人不能使用。

#代理服务端口Port1080#允许哪个客户端使用该代理程序?Allowxxx.xxx.xxx.xxx

启动tinyproxy提供代理服务。最好在防火墙中检查1080端口是否打开。

#代理服务端口Port1080#允许哪个客户端使用该代理程序?Allowxxx.xxx.xxx.xxx


二、用于测试的服务端

我们这次要访问的服务器是http://www.httpbin.org,这是一个提供在线HTTP访问服务的网站。我们可以用它来测试。

Http://www.httpbin.org/ip是我们这次要访问的服务,响应结果是访问者的IP。

当我在家里用电脑访问这项服务时,结果如下:


图中没有代理,所以返回我家的ip。如果我使用代理访问,返回的结果应该是代理服务器的ip地址。


三、代理使用者RestTemplate

我的第一部分中的代理服务器的ip是88.99.10.251,tinyproxy代理服务端口1080。以下代码通过SimpleClientHttpRequestFactory设置访问代理。

@SpringBootTestclassProxyTests{@ResourceprivateRestTemplaterestTemplate;@TestvoidtestProxyIp(){Stringurl=quot;http://www.httpbin.org/ipquot;;SimpleClientHttpRequestFactoryrequestFactory=newSimpleClientHttpRequestFactory();requestFactory.setProxy(newProxy(Proxy.Type.HTTP,newInetSocketAddress(quot;88.99.10.251quot;,1080)//设置代理服务));restTemplate.setRequestFactory(requestFactory);//发送请求Stringresult=restTemplate.getForObject(url,String.class);System.out.println(result);//打印响应结果}}

代理类型可以是HTTP或SOCKS。下图是quothttp://www.httpbin.org/ipquot;作为请求响应的结果,返回的是代理服务器的ip而不是我家的ip。说明我们为RestTemplate设置的代理是有效的。


这就是RestTemplate使用代理作为发送请求的跳板的细节。

0

精彩评论

暂无评论...
验证码 换一张
取 消