RestTemplate使用Proxy代理作为跳板发送请求

目录
  • 前言
  • 一、搭建一个代理服务器
  • 二、用于测试的服务端
  • 三、代理使用者RestTemplate

前言

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

RestTemplate在Spring或非Spring环境下使用精讲

RestTemplate实现多种底层HTTP客户端类库的切换用法

RestTemplate发送HTTP GET请求使用方法详解

RestTemplate发送HTTP POST请求使用方法详解

RestTemplate的DELETE及PUT等请求方法使用精讲

RestTemplate文件上传下载与大文件流式下载

RestTemplate自定义请求失败异常处理示例解析

RestTemplate请求失败自动重启机制精讲

RestTemplate如何通过HTTP Basic Auth认证示例说明

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

我们本节就来为大家介绍,作为一个代理使用者,该如何使用RestTemplate发送请求的时候使用代理Proxy。

一、搭建一个代理服务器

笔者只从知识的层面去讲解使用方法,所以不做蝇营狗苟的勾当。代理服务器还是由我自己来搭建用来测试,在我的一个CentOS服务器上安装tinyproxy,tinyproxy可以提供代理服务。

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

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

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

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

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

二、用于测试的服务端

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

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

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

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

三、代理使用者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 设置的代理生效了。

以上就是RestTemplate使用Proxy代理作为跳板发送请求的详细内容,更多关于RestTemplate使用Proxy代理发送请求的资料请关注我们其它相关文章!

以上就是RestTemplate使用Proxy代理作为跳板发送请求的详细内容,更多关于RestTemplate使用Proxy代理发送请求的资料请关注我们其它相关文章!

(0)

相关推荐

  • RestTemplate的DELETE及PUT等请求方法使用精讲

    目录 一.RESTful风格与HTTPmethod 二.使用DELETE方法去删除资源 三.使用PUT方法去修改资源 三.通用请求方法exchange方法 四.使用HEAD方法获取HTTP请求头数据 五.使用OPTIONS获取HTTP资源支持的method 本文是精讲RestTemplate第5篇,前篇的blog访问地址如下: RestTemplate在Spring或非Spring环境下使用精讲 RestTemplate实现多种底层HTTP客户端类库的切换用法 RestTemplate发送HTT

  • RestTemplate实现多种底层HTTP客户端类库的切换用法

    本文是精讲RestTemplate第2篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 RestTemplate只是对其他的HTTP客户端的封装,其本身并没有实现HTTP相关的基础功能.其底层实现是可以配置切换的,我们本小节就带着大家来看一下RestTemplate底层实现,及如何实现底层基础HTTP库的切换. 一.源码分析 RestTemplate有一个非常重要的类叫做HttpAccessor,可以理解为用于HTTP接触访问的基

  • RestTemplate GET请求使用方法详解

    目录 一.getForObject()方法 1.1.以String的方式接受请求结果数据 1.2.以POJO对象的方式接受结果数据 1.3.以数组的方式接收请求结果 1.4.使用占位符号传参的几种方式 二.getForEntity()方法 欢迎关注我的博客,里面有很多精品合集本文转载注明出处(必须带连接,不能只转文字):字母哥博客. 本文是精讲RestTemplate第3篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用精讲Rest

  • RestTemplate自定义请求失败异常处理示例解析

    目录 前言 一.异常现象 二.源码解析-默认实现 三.RestTemplate自定义异常处理 前言 本文是精讲RestTemplate第7篇,前篇的blog访问地址如下: RestTemplate在Spring或非Spring环境下使用精讲 RestTemplate实现多种底层HTTP客户端类库的切换用法 RestTemplate发送HTTP GET请求使用方法详解 RestTemplate发送HTTP POST请求使用方法详解 RestTemplate的DELETE及PUT等请求方法使用精讲

  • RestTemplate发送HTTP POST请求使用方法详解

    目录 一.postForObject发送JSON格式请求 二.postForObject模拟表单数据提交 三.url支持占位符语法 四.postForEntity()方法 五.postForLocation()方法的使用 本文是精讲RestTemplate第4篇,前篇的blog访问地址如下: RestTemplate在Spring或非Spring环境下使用精讲 RestTemplate实现多种底层HTTP客户端类库的切换用法 RestTemplate发送HTTP GET请求使用方法详解 在上一节

  • java 发送带Basic Auth认证的http post请求实例代码

    构造http header private static final String URL = "url"; private static final String APP_KEY = "key"; private static final String SECRET_KEY = "secret"; /** * 构造Basic Auth认证头信息 * * @return */ private String getHeader() { String

  • RestTemplate使用Proxy代理作为跳板发送请求

    目录 前言 一.搭建一个代理服务器 二.用于测试的服务端 三.代理使用者RestTemplate 前言 本文是精讲RestTemplate第10篇,前篇的blog访问地址如下: RestTemplate在Spring或非Spring环境下使用精讲 RestTemplate实现多种底层HTTP客户端类库的切换用法 RestTemplate发送HTTP GET请求使用方法详解 RestTemplate发送HTTP POST请求使用方法详解 RestTemplate的DELETE及PUT等请求方法使用

  • RestTemplate使用代理作为跳板发送请求

    目录 本文是精讲RestTemplate第10篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换精讲RestTemplate第3篇-GET请求使用方法详解精讲RestTemplate第4篇-POST请求方法使用详解精讲RestTemplate第5篇-DELETE.PUT等请求方法使用详解精讲RestTemplate第6篇-文件上传下载与大文件流式下载精讲RestTe

  • C# 使用Proxy代理请求资源的方法步骤

    前言 这是上周在开发 C# 中使用 Proxy 代理时开发的一些思考和实践.主要需求是这样的,用户可以配置每次请求是否需要代理,用户可以配置 HTTP代理,HTTPS代理和代理白名单. 还是太年轻 因为一直用的C# 网络库中的HttpWebRequest,所以自然而然先去找找看这个网络库有没有封装好我所需要的代理呀.果不其然,被我找到了.自从上次发现某些类对老版本不兼容后,每次在微软官方文档上找到都会翻到最后,查看一下支持的最低框架. 我需要的就是这个 Proxy 属性,也就是说我最终在发送请求

  • 详解基于angular-cli配置代理解决跨域请求问题

    1.跨域请求产生 随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本. 而前后端分离带来的一个问题就是前端web部署的服务器和后端提供服务的服务器大概率不在同一个域名下,进而会产生跨域问题. 2.通用解决方案 如果浏览器支持HTML5,那么就可以一

  • vue跨域proxy代理配置详解

    目录 引言 例一 例二 总结 引言 相信很多人都用过proxy,这里就不多说proxy的基本使用,这里要说一下很多人使用proxy的一个误区,大家一般都是直接将管官方的例子拿过来,修改一下代理目标直接就是用了,但是代理的路径匹配你真的会用么? 如果你能够认证看完那么我保证你下次再配置代理的时候就能一步就能完成,无需多次npm run serve 先来一个正则热热身待会需要用,看懂了再往下看: 例一 这是我使用express自己搭建的一个超级简单的服务器,代码如下(没有设置允许跨域请求) // 引

  • vue中proxy代理的用法(解决跨域问题)

    目录 声明 1. 首先我们应该知道 2. 跨域,什么是跨域呢? 问题 跨域的解决方案 代理服务器是如何解决跨域的? proxy配置 以vue cli3.0为例 总结 声明 1. 首先我们应该知道 前端axios在本地发送的请求如果你不把路径写全,它都是会默认加上自己项目所在的端口,就比如说: axios.get('/login') axios.get('/hello') 当我点击发送按钮之后,以上两行代码实际为: http://localhost:8080/login http://localh

  • vue中如何配置proxy代理

    目录 vue配置proxy代理 proxy常用参数说明 关于/api的详解 部署因为/api无法请求到数据 总结 vue配置proxy代理 如果你的前端应用和后端 API 服务器没有运行在同一个主机上(即解决跨域问题,用proxy代理请求一下),你需要在开发环境下将 API 请求代理到 API 服务器. 这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置. 将 转发到 https://apimusic.linweiqin.com app.vue文件 <

  • Python基于scapy实现修改IP发送请求的方法示例

    本文实例讲述了Python基于scapy实现修改IP发送请求的方法.分享给大家供大家参考,具体如下: 今天同事想测试WAF的页面统计功能,所以需要模拟多个IP向多个域名发送请求,也就是需要修改源IP地址.这个如果使用socket库就比较麻烦了, 需要使用raw socket,相当麻烦.还好咱有scapy,轻松搞定. DOMAIN是我随机构造的域名库,SOURCE也是随机构造的源IP地址. #!/usr/bin/env python #-*-encoding:UTF-8-*- from scapy

  • Vue中如何实现proxy代理

    Vue 框架开发的时候,会遇到跨域的问题,可在config/index.js 里配置proxyTable内容,使用proxy 代理. // config/index.js 文件 proxyTable: { '/api': { target: 'http://192.168.149.90:8080/', // 设置你调用的接口域名和端口号 changeOrigin: true, // 跨域 pathRewrite: { '^/api': '/' } } }, 这里理解成用'/api'代替targe

  • 在python中使用requests 模拟浏览器发送请求数据的方法

    如下所示: import requests url='http://####' proxy={'http':'http://####:80'} headers={ "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Accept-Lang

随机推荐