皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Proxy-Go 全平台 SDK v5.3 发布,新增日志回调

Proxy-Go 全平台 SDK 是 proxy 使用 gombile 实现了一份 go 代码编译为 android 和 ios 平台下面可以直接调用的 sdk 类库, 另外还为 linux 和 windows 提供 sdk 支持,基于这些类库,APP 开发者可以轻松的开发出各种形式的代理工具。

此次更新:

  • 增加了支持日志输出回调的方法:
    StartWithLog(serviceID, serviceArgsStr string, loggerCallback LogCallback)
  • 优化了 socks_client 握手端口判断, 避免了 sstap 测试 UDP 失败的问题..
  • 修复了 HTTP(S)\SPS 反向代理无法正常工作的问题.
  • 优化了智能判断, 减少不必要的 DNS 解析.
  • 重构了 SOCKS 和 SPS 的 UDP 功能, 基于 UDP 的游戏加速嗖嗖的.

下载地址:

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://www.oschina.net/news/98300/proxy-go-5-3-released

分享到:更多 ()