Proxy-Go全平台SDK v6.0正式发布了,本文将分别介绍新的特性及Android-SDK、Linux-SDK、Windows-SDK、IOS-SDK、MacOS-SDK的使用实例。
Proxy-Go全平台SDK是proxy使用gombile实现了一份go代码编译为android和ios平台下面可以直接调用的sdk类库,另外还为linux和windows提供sdk支持,基于这些类库,APP开发者可以轻松的开发出各种形式的代理工具。
Proxy-Go全平台SDK v6.0更新 优化连接HTTP(s)上级代理的CONNECT指令,附带更多的信息. 重构了内网穿透的UDP功能,性能大幅度提升,可以愉快的与异地基友玩依赖UDP的局域网游戏了. 重构了UDP端口映射,性能大幅度提升. HTTP(S)\SOCKS5\SPS代理支持上级负载均衡,可以同时指定多个上级. SPS支持HTTP(S)\SOCKS5\SS协议相互转换. HTTP(S)\SOCKS5\SPS代理支持限速. HTTP(S)\SOCKS5代理支持指定出口IP. SOCKS5代理支持级联认证. 修复了tclient可能意外退出的bug. 优化了错误捕获,防止意外crash. 优化了停止服务,释放内存.
下载地址
Proxy SDK 使用说明 支持以下平台: Android,.arr库 IOS,.framework库 Windows,.dll库 Linux,.so库 MacOS,.dylib库
下面分平台介绍SDK的用法 一、Android SDK 在Android系统提供的sdk形式是一个后缀为.aar的类库文件,开发的时候只需要把arr类库文件引入android项目即可. Android-SDK使用实例: 1.导入包 import snail007.proxy.Porxy 2.启动一个服务 String serviceID="http01";//这里serviceID是自定义的唯一标识字符串,保证每个启动的服务不一样即可 String serviceArgs="http -p :8080"; String err=Proxy.start(serviceID,serviceArgs); if (!err.isEmpty()){ //启动失败 System.out.println("start fail,error:"+err); }else{ //启动成功 } 3.停止一个服务 String serviceID="http01"; Proxy.stop(serviceID); //停止完毕 二、IOS SDK 在IOS系统提供的sdk形式是一个后缀为.framework的类库文件夹,开发的时候只需要把类库文件引入项目,然后调用方法即可. IOS-SDK使用实例: 1.导入包 #import <Proxy/Proxy.objc.h> 2.启动一个服务 -(IBAction)doStart:(id)sender { //这里serviceID是自定义的唯一标识字符串,保证每个启动的服务不一样 NSString *serviceID = @"http01"; NSString *serviceArgs = @"http -p :8080"; NSString *error = ProxyStart(serviceID,serviceArgs); if (error != nil && error.length > 0) { NSLog(@"start error %@",error); }else{ NSLog(@"启动成功"); } } 3.停止一个服务 -(IBAction)doStop:(id)sender { NSString *serviceID = @"http01"; ProxyStop(serviceID); //停止完毕 } 三、Windows SDK 在Windows系统提供的sdk形式是一个后缀为.dll的类库文件,开发的时候只需要把dll类库文件加载,然后调用方法即可. Windows-SDK使用实例: C++示例,不需要包含头文件,只需要加载proxy-sdk.dll即可,ieshims.dll需要和proxy-sdk.dll在一起。 #include <stdio.h> #include<stdlib.h> #include <string.h> #include<pthread.h> #include<Windows.h> #ifdef __cplusplus extern "C" { #endif typedef char *(*GOSTART)(char *s); typedef char *(*GOSTOP)(char *s); typedef int(*GOISRUN)(char *s); HMODULE GODLL = LoadLibrary("proxy-sdk.dll"); char * Start(char * p0,char * p1) { if (GODLL != NULL) { GOSTART gostart = *(GOSTART)(GetProcAddress(GODLL, "Start")); if (gostart != NULL){ printf("%s:%s\n",p0, p1); char *ret = gostart(p0,p1); return ret; } } return "Cannot Find dll"; } char * Stop(char * p) { if (GODLL != NULL) { GOSTOP gostop = *(GOSTOP)(GetProcAddress(GODLL, "Stop")); if (gostop != NULL){ printf("%s\n", p); char *ret = gostop(p); return ret; } } return "Cannot Find dll"; } int main() { //这里p0是自定义的唯一标识字符串,保证每个启动的服务不一样 char *p0 = "http01"; char *p1 = "http -t tcp -p :38080"; printf("This is demo application.\n"); //启动服务,返回空字符串说明启动成功;返回非空字符串说明启动失败,返回的字符串是错误原因 printf("start result %s\n", Start(p0,p1)); //停止服务,没有返回值 Stop(p0); return 0; } #ifdef __cplusplus } #endif C++示例2,请移步:GoProxyForC 四、Linux SDK 在Linux系统提供的sdk形式是一个后缀为.so的类库文件,开发的时候只需要把so类库加载,调用方法即可. Linux-SDK使用实例: Linux下面使用的sdk是so文件即libproxy-sdk.so,下面写一个简单的C程序示例,调用so库里面的方法. vi test-proxy.c #include <stdio.h> #include "libproxy-sdk.h" int main() { printf("This is demo application.\n"); //这里p0是自定义的唯一标识字符串,保证每个启动的服务不一样 char *p0 = "http01"; char *p1 = "http -t tcp -p :38080"; //启动服务,返回空字符串说明启动成功;返回非空字符串说明启动失败,返回的字符串是错误原因 printf("start result %s\n",Start(p0,p1)); //停止服务,没有返回值 Stop(p0); return 0; } 编译test-proxy.c export LD_LIBRARY_PATH=./ && gcc -o test-proxy test-骗人偶像有.c libproxy-sdk.so 执行 ./test-proxy 五、MacOS SDK 在MacOS系统提供的sdk形式是一个后缀为.dylib的类库文件,开发的时候只需要把so类库加载,调用方法即可. MacOS-SDK使用实例: MacOS下面使用的sdk是dylib文件即libproxy-sdk.dylib,下面写一个简单的Obj-C程序示例,调用dylib库里面的方法. #import "libproxy-sdk.h" -(IBAction)doStart:(id)sender { char *result = Start("http01", "http -t tcp -p :38080"); if (result) { printf("started"); }else{ printf("not started"); } } -(IBAction)doStop:(id)sender { Stop("http01"); }
关于服务 proxy的服务有11种,分别是: http socks sps tcp udp bridge server client tbridge tserver tclient 服务启动时,如果存在正在运行的相同ID的服务,那么之前的服务会被停掉,后面启动的服务覆盖之前的服务。 所以要保证每次启动服务的时候,第一个ID参数唯一。 上面这些服务的具体使用方式和具体参数,可以参考proxy手册。 sdk里面的服务不支持手册里面的:--daemon和--forever参数。 注:除此之外,Proxy-Go-JUI v6.0也发布了,升级到了最新SDK6.0。
附:Proxy-Go v6.0 强势发布:企业版开源 , 大量新特性 Proxy-Go v6.0 企业版开源啦。Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转、TLS加密传输、协议转换、DNS防污染代理。 本次更新主要是把企业版开源,把企业版代码合并到现在的开源goproxy当中,继续遵循GPLv3,免费开源,之所以直接跳过5.x,用6.0版本号是为了与现有开源版本做一个明显的区分,下面功能主要来自企业版. 企业版代码结构更合理,核心与开源版本有很大区别,与此同时企业版有一个core开发库,基于此库可以几行代码实现自己高度定制化的各种网络安全传输服务器和客户端和代理服务器与客户端.与此同时企业版独创了TCPS协议,处于应用层和TCP层之间,可以为应用提供透明化的安全传输功能,另外还对dst协议进行了一些改造,集成到goproxy中,实现了tcp over udp功能,那么除了kcp之外现在还可以选择dst作为底层的tcp over udp的传输. 下一步加入插件机制,定制功能可以使用插件方式开发了。热插拔不需要修改goproxy二进制,可以插件so或者dylib注入. 更新内容: 预编译的二进制增加了armv8支持. 预编译的mipsle和mips二进制增加了softfloat支持. 优化连接HTTP(s)上级代理的CONNECT指令,附带更多的信息. 重构了内网穿透的UDP功能,性能大幅度提升,可以愉快的与异地基友玩依赖UDP的局域网游戏了. 重构了UDP端口映射,性能大幅度提升. HTTP(S)\SOCKS5\SPS代理支持上级负载均衡,可以同时指定多个上级. SPS支持HTTP(S)\SOCKS5\SS协议相互转换. HTTP(S)\SOCKS5\SPS代理支持限速. HTTP(S)\SOCKS5代理支持指定出口IP. SOCKS5代理支持级联认证. 修复了tclient可能意外退出的bug. 优化了错误捕获,防止意外crash. 优化了停止服务,释放内存. 特点: 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理. 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征. 智能HTTP,SOCKS5代理,会自动判断访问的网站情况. 域名名单,更加自由的控制网站的访问方式。 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派,都可以很好的运行proxy. 多协议支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理. TCP/UDP端口转发. 支持内网穿透,协议支持TCP和UDP. SSH中转,HTTP(S),SOCKS5代理支持SSH中转,上级Linux服务器不需要任何服务端,本地一个proxy即可开心上网. KCP协议支持,HTTP(S),SOCKS5代理支持KCP协议传输数据,降低延迟,提升浏览体验. 集成外部API,HTTP(S),SOCKS5代理认证功能可以与外部HTTP API集成,可以方便的通过外部系统控制代理用户. 反向代理,支持直接把域名解析到proxy监听的ip,然后proxy就会帮你代理访问需要访问的HTTP(S)网站. 透明HTTP(S)代理,配合iptables,在网关直接把出去的80,443方向的流量转发到proxy,就能实现无感知的智能路由器代理. 协议转换,可以把已经存在的HTTP(S)或SOCKS5或SS代理转换为一个端口同时支持HTTP(S)和SOCKS5和SS代理,转换后的SOCKS5和SS代理如果上级是SOCKS5代理,那么支持UDP功能,同时支持强大的级联认证功能。 自定义底层加密传输,http(s)\sps\socks代理在tcp之上可以通过tls标准加密以及kcp协议加密tcp数据,除此之外还支持在tls和kcp之后进行自定义加密,也就是说自定义加密和tls|kcp是可以联合使用的,内部采用AES256加密,使用的时候只需要自己定义一个密码即可。 底层压缩高效传输,http(s)\sps\socks代理在tcp之上可以通过自定义加密和tls标准加密以及kcp协议加密tcp数据,在加密之后还可以对数据进行压缩,也就是说压缩功能和自定义加密和tls|kcp是可以联合使用的。 安全的DNS代理,可以通过本地的proxy提供的DNS代理服务器与上级代理加密通讯实现安全防污染的DNS查询。 负载均衡,高可用,HTTP(S)\SOCKS5\SPS代理支持上级负载均衡和高可用,多个上级重复-P参数即可. 指定出口IP,HTTP(S)\SOCKS5\SPS代理支持客户端用入口IP连接过来的,就用入口IP作为出口IP访问目标网站的功能。如果入口IP是内网IP,出口IP不会使用入口IP 支持限速,HTTP(S)\SOCKS5\SPS代理支持限速. SOCKS5代理支持级联认证. 证书参数使用base64数据,默认情况下-C,-K参数是crt证书和key文件的路径,如果是base64://开头,那么就认为后面的数据是base64编码的,会解码后使用. 下载地址:
相关主题 |