
Proxy-Go 全平台 SDK 是 proxy 使用 gombile 实现了一份 go 代码编译为 android 和 ios 平台下面可以直接调用的 sdk 类库, 另外还为 linux 和 windows 提供 sdk 支持,基于这些类库,APP 开发者可以轻松的开发出各种形式的代理工具。
此次更新:
- 修复了 HTTP Basic 代理返回不合适的头部, 导致浏览器不会弹框, 个别代理插件无法认证的问题.
- 内网穿透切换 smux 到 yamux.
- 优化了 HTTP(S)\SOCKS5 代理–always 的处理逻辑
Proxy SDK 使用说明
支持以下平台:
- Android,.arr 库
- IOS,.framework 库
- Windows,.dll 库
- Linux,.so 库
- MacOS,.dylib 库
proxy 使用 gombile 实现了一份 go 代码编译为 android 和 ios 平台下面可以直接调用的 sdk 类库, 另外还为 linux 和 windows 提供 sdk 支持,基于这些类库,APP 开发者可以轻松的开发出各种形式的代理工具。
下面分平台介绍 SDK 的用法
Android 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
在 IOS 系统提供的 sdk 形式是一个后缀为.framework 的类库文件夹, 开发的时候只需要把类库文件引入项目, 然后调用方法即可.
IOS-SDK 使用实例
导入包
#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
在 Windows 系统提供的 sdk 形式是一个后缀为.dll 的类库文件, 开发的时候只需要把 dll 类库文件加载, 然后调用方法即可.
Windows-SDK 使用实例
C++示例,不需要包含头文件,只需要加载 proxy-sdk.dll 即可,ieshims.dll 需要和 proxy-sdk.dll 在一起。
作者:yjbdsky
#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
在 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
在 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 参数。
转自 https://ift.tt/2JDgHwN
没有评论:
发表评论