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

目录

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

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换精讲RestTemplate第3篇-GET请求使用方法详解精讲RestTemplate第4篇-POST请求方法使用详解精讲RestTemplate第5篇-DELETE、PUT等请求方法使用详解精讲RestTemplate第6篇-文件上传下载与大文件流式下载精讲RestTemplate第7篇-自定义请求失败异常处理精讲RestTemplate第8篇-请求失败自动重试机制精讲RestTemplate第9篇-如何通过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端口。

systemctl start tinyproxy.service

二、用于测试的服务端 我们这次要访问的服务端是:http://www.httpbin.org, 这个网站是提供在线的HTTP访问服务的网站。我们可以用它进行测试。http://www.httpbin.org/ip是我们本次要访问的服务,响应结果是访问者的IP。

我在家里使用电脑访问这个服务的时候结果如下: 上图没有使用代理,所以返回的是我家的ip。如果我使用代理访问,返回结果应该是proxy代理服务器的ip地址。

三、代理使用者RestTemplate

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

@SpringBootTestclass 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 设置的代理生效了。

欢迎关注我的博客,里面有很多精品合集 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。

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

《手摸手教你学Spring Boot2.0》《Spring Security-JWT-OAuth2一本通》《实战前后端分离RBAC权限管理系统》《实战SpringCloud微服务从青铜到王者》《VUE深入浅出系列》

(0)

相关推荐

  • python数据可视化使用pyfinance分析证券收益示例详解

    目录 pyfinance简介 pyfinance包含六个模块 returns模块应用实例 收益率计算 CAPM模型相关指标 风险指标 基准比较指标 风险调整收益指标 综合业绩评价指标分析实例 结语 pyfinance简介 在查找如何使用Python实现滚动回归时,发现一个很有用的量化金融包--pyfinance.顾名思义,pyfinance是为投资管理和证券收益分析而构建的Python分析包,主要是对面向定量金融的现有包进行补充,如pyfolio和pandas等. pyfinance包含六个模块

  • python数据可视化JupyterLab实用扩展程序Mito

    目录 遇见 Mito 如何启动 Mito 数据透视表 Mito 令人印象深刻的功能 可视化数据 自动代码生成 Mito 安装 JupyterLab 是 Jupyter 主打的最新数据科学生产工具,某种意义上,它的出现是为了取代Jupyter Notebook. 它作为一种基于 web 的集成开发环境,你可以使用它编写notebook.操作终端.编辑markdown文本.打开交互模式.查看csv文件及图片等功能. JupyterLab 最棒的体验就是有丰富的扩展插件,我记得过去我们不得不依赖 nu

  • python优化数据预处理方法Pandas pipe详解

    我们知道现实中的数据通常是杂乱无章的,需要大量的预处理才能使用.Pandas 是应用最广泛的数据分析和处理库之一,它提供了多种对原始数据进行预处理的方法. import numpy as np import pandas as pd df = pd.DataFrame({ "id": [100, 100, 101, 102, 103, 104, 105, 106], "A": [1, 2, 3, 4, 5, 2, np.nan, 5], "B":

  • 推荐一款高效的python数据框处理工具Sidetable

    目录 安装 用法 1.freq() 2.Counts 3.missing() 4.subtotal() 结论 我们知道 Pandas 是数据科学社区中流行的 Python 包,它包含许多函数和方法来分析数据.尽管它的功能对于数据分析来说足够有效,但定制的库可以为 Pandas 增加更多的价值. Sidetable 就是一个开源 Python 库,它是一种可用于数据分析和探索的工具,作为 value_counts 和 crosstab 的功能组合使用的.在本文中,我们将更多地讨论和探索其功能.欢迎

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

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

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

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

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

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

  • 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

  • Python3爬虫发送请求的知识点实例

    使用urllib的request模块,我们可以方便地实现请求的发送并得到响应,本节就来看下它的具体用法. 1. urlopen() urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理授权验证(authenticaton).重定向(redirection).浏览器Cookies以及其他内容. 下面我们来看一下它的强大之处.这里以Python官网为例,我们来把这个网页抓下来: import urllib.request re

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

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

  • springboot vue测试平台接口定义及发送请求功能实现

    目录 基于 springboot+vue 的测试平台开发 一.http客户端选型 二.后端接口实现 1. controller 层 2. service 层 三.前端实现 四.修改遗留 bug 基于 springboot+vue 的测试平台开发 继续更新 添加的接口,我要来调试确定是否是通的,那么要发送接口请求,今天来实现这个功能,先预览一下: 捋一下思路,分为三步走: 点击发送按钮,调用后端接口后端接口处理内部,发送http接口请求后端接口把响应返回给前端展示 一.http客户端选型 为了更方

  • Python Http发送请求浅析

    目录 前言 浅析requests 浅析aiohttp 浅析httpx 结语 前言 相信很多人使用Python做接口请求(Http客户端请求)的时候,很多人肯定用过这几个:urllib,urllib3,requests.没错,反正我常用,而且在我这里出现最多最靓眼的那个崽是requests, 毕竟普通接口请求,爬虫常用, 而且封装起来后使用更为简单.所以在这篇文章里面,它是我浅析研究三国鼎立的其中之一. 这篇文章主要浅析这三个: requests aiohttp httpx 浅析requests

  • Vue.js实战之使用Vuex + axios发送请求详解

    前言 Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求,而大型项目都会使用 Vuex 来管理数据,所以这篇博客将结合两者来发送请求 Vuex 的安装将不再赘述,可以参考之前的Vue.js实战之Vuex的入门教程 使用 cnpm 安装 axios cnpm install axios -S 安装其他插件的时候,可以直接在 ma

  • jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用. 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据.阅读本文的读者应该具备jQuery.Ajax.PHP相关知识,并能熟练运用. XHTML <ul id="use

随机推荐