Socket使用Linux SSH代理发送数据

Socket使用Linux SSH代理发送数据

写这篇文章是为了解决项目开发中,在处理第三方接口时,在本地开发调试的问题。

场景:

某应用需要调用发送短信接口发送短信(或调用其他第三方接口),但是这些接口都有服务器IP鉴权,只允许从局方提供的服务器上才能调用。

需求:

接入第三方接口需要一个开发和反复调试的过程,每次将写好的程序上传到服务器上测试很是麻烦,看日志和断点调试又都不方便,现在需要让第三方接口把自己电脑认作是服务器,这样就方便开发调试了。

前提条件:

服务器要可以进行SSH连接,但又没有VPN(因为有VPN就没有这些问题了,拨进去就直接可以)

一、做如下准备:

1、一台可以通过Intenet进行ssh连接的linux服务器

     我们假设服务器IP地址为202.102.110.110,ssh端口22,登录账号root,登录密码123456

2、一个有IP地址鉴权,只允许该服务器访问的第三方接口

     我们假设这个接口为一个Socket接口,接口IP地址为202.102.119.119,端口为8080

3、ssh代理软件

     myentunnel,下载地址:http://ishare.iask.sina.com.cn/f/23849533.html?from=like,如果该连接不可以下载,百度一下即可,有很多资源。

4、firefox浏览器

     非必须,下面也会写一下firefox浏览器的代理配置,网上购买ssh账号就可以访问 facebook 这样的网站了。

二、配置ssh代理软件

1、运行myentunnel.exe,如图:

打开显示配置界面,如图:

2、配置SSH登录参数

输入服务器IP地址202.102.110.110、登陆账号、密码,这里我们设置本地代理端口为7070,后面需要用到。

点击保存——>连接,我们可以隐藏窗口,需要打开界面在电脑右下角可以找到。

三、Socket 连接使用代理像第三方接口发送数据

1、常规 Socket 连接代码如下:

[java] view plaincopy

  1. Socket socket = new Socket("202.102.119.119",8080);  
  2. socket.setSoTimeout(60000);  
  3. //……  

2、使用代理连接发送数据代码如下:

[java] view plaincopy

  1. Socket socket = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1",7070)));//本地代理端口为7070  
  2. socket.connect(new InetSocketAddress("202.102.119.119",8080));  
  3. socket.setSoTimeout(60000);  
  4. //……  

这样以来,第三方接口鉴权IP获取的IP地址就是我们的服务器IP地址(202.102.110.110),而不会是我们自己电脑的IP地址了。

四、配置 firefox 浏览器使用socks5 代理

1、访问 http://www.ip138.com/ 可以查看我们的IP地址,下图是我的IP地址:

2、打开 firefox 浏览器,在地址栏输入about:config,搜索 remote ,设置 network.proxy.socks_remote_dns 的值为true,双击可以切换false和true。

3、点击浏览器上面菜单栏中的工具->高级->网络->设置->手动配置代理->输入socks主机为127.0.0.1,端口为7070 ->确定完成

此时再打开http://www.ip138.com/ 网站查看IP地址就变成服务器的IP地址了 202.102.110.110

PS:如果需要经常上一些国外的网站,像开始提到的 facebook,可以在网上买一个ssh代理服务器账号,使用上面的方法即可访问。

时间: 2024-09-18 21:23:23

Socket使用Linux SSH代理发送数据的相关文章

多队列网卡简介以及Linux通过网卡发送数据包源码解读

首先我们看一下一个主流多队列网卡(E1000)跟多核CPU之间的关系图: 非多队列: linux的网卡由结构体net_device表示,一个该结构体对应一个可以调度的数据包发送队列. 数据包的实体在内核中以结构体sk_buff(skb),形如: 多队列: 一个网卡可以拥有多个队列 接下来,看看TX引擎是如何工作的(注:对于发送和接收数据包有两个名词,分别应对TX,RX) 解释: 函数-dev_queue_xmit():入队一个buffer以传输到网络驱动设备. 配合该函数的源码来解释上图的传输过

PHP利用socket模拟post之fsockopen发送数据

 代码如下 复制代码 POST /目的程序 HTTP/1.1 Accept: */* Referer: http://www.111cn.net Accept-Language: zh-cn,en-us;q=0.5 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; .NET CLR 1.0.3705; .NET CLR 1.1.432

使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图.下面就来看看本文实现的功能: Silverlight 与服务器利用Socket通讯,实时从服务器获取数据(本文中的数据是地理坐标),由于没有GPS,所以本文在服务器写了一个构造新坐标的函数(本文是一个三角函数),然后利用Timer组件,实时调用,得到新的坐标,并将新的坐标发送给客户端,客户端接收到发

网络编程-Linux socket udp发送数据返回socket错误22

问题描述 Linux socket udp发送数据返回socket错误22 linux下用c网络编程用sendto发送数据,总返回socket error代号22是什么错误呢? 解决方案 http://blog.csdn.net/dog250/article/details/9569855

代码-linux的xterm开启的终端里使用原始套接字发送数据包出错,求助

问题描述 linux的xterm开启的终端里使用原始套接字发送数据包出错,求助 xterm下原始套接字可以接收数据包,但是发送数据包时出错,怎么解决? 错误是[error 101]network is unreachable. 代码如下: proto = socket.getprotobyname('tcp') # only tcp sock = socket.socket( socket.AF_INET, socket.SOCK_RAW, proto ) packet_base = sock.

小段数据发送-Android Socket发送数据遇到的奇怪问题

问题描述 Android Socket发送数据遇到的奇怪问题 向各位大虾求救!!! 写一段简单的Android网络通讯程序,发现总是发送数据发了100上下字节(每次8个字节),然后就发不出去了,但是也没有任何异常抛出,检查所有状态都正常. 有谁知道这可能是什么情况? 连接代码是这样的: mSocket=new Socket(mStrIP, mPort); mSocket.setTcpNoDelay(true); // disable Nagle algorithm mSocket.setKeep

java-Java Socket网络通信问题,向百度发送数据(学习socket中~)

问题描述 Java Socket网络通信问题,向百度发送数据(学习socket中~) 我在本地客户端向百度某个端口(如:80)发送一个数据(例如字符a),百度会返回什么信息吗? 测了一下,并没有什么回应.那么我在本地客户端怎么做,百度才会返回一些信息 (例如:时间.网页新闻之类的消息) 解决方案 http://blog.csdn.net/b_h_l/article/details/8712282 解决方案二: 基于Java的socket网络通信Java网络通信Socket[Cocos2d-x]使

socket-VBS中Socket通过TCP协议发送数据

问题描述 VBS中Socket通过TCP协议发送数据 问题是一个接着一个: 在使用MSWINsock.Winsock通过TCP发送数据到Server的时候,提示如下错误: 代码如下: Dim sock,socket '赋值sock变量为WINSOCK的对象 Set sock = Wscript.createobject("MSWINsock.Winsock") sock.Protocol = 0 sock.RemoteHost = "10.185.59.51" so

编程-Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息)

问题描述 Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息) 只求发送数据部分和数据接收部分 TCP连接不要 客户端和服务器响应次数也不要 只求发送数据部分和数据接收部分(java发送c#接收) 解决方案 server: Java code public void handleConnection(Socket connection) { System.out.println("客户:" + connection.getInetAddress() +