Home › Forums › Share your experiences / 经验分享 › 如何將SocksCap64整合到你的軟件中去?(通過Socket控制SocksCap64軟件的一些行為?)
Tagged: bug,4.1, SocksCap64
- This topic has 3 replies, 3 voices, and was last updated 6 years, 3 months ago by 致嘉 楊.
-
AuthorPosts
-
-
如何將SocksCap64整合到你的軟件中去?(通過Socket控制SocksCap64軟件的一些行為?)
注: 僅2.7版本(包括2.7)以上的SC64才支持通過Socket控制sc64的行為.
此舉主要為某些希望將SocksCap64(以下簡稱SC64)整合到自己軟件中去的開發者而設置.
SC64提供了一個本地的NS解析服務, 同時可以處理用戶發出一些控制行為, 此服務通常監聽在29810端口, 但某些情況下也會更改(例如此端口已提前被占用). 穩妥的做法是找到SC64的安裝目錄下的config\ns.ini文件, 裏邊記錄了當前SC64的NS服務正在工作的端口, 如下:
[basic]
ip=127.0.0.1
port=29810
searchport=1
port即是當前工作端口. 下邊將正確的開發流程加下說明.
1, 打開注冊表HKEY_CURRENT_USER\Software\Sockscap64
Install_Dir 項指明了SC64當前的安裝目錄.
2, 讀取Install_Dir\config\ns.ini文件. 獲得SC64當前NS工作在哪個端口.
3, 創建Socket向第2步中取得到的端口發送控制指令. 相關控制指令在如下說明.
與ns通信的數據包格式為(ns的回複信息也是這樣的格式): cmd (1 bytes) + length of packet body(4 bytes) + packet body
length of packet body指packet body長度.
packet body是采用“\r\n”区隔的多行文本,采用Utf8編碼, 以0x00结束( 发送指令时务必将0x00结束符发送过来)。
ns的指令回複中的packet body也是”\r\n”分隔的多行文本, 僅2行, 第一行是錯誤碼, 0表示成功, 1表示一般性錯誤,其它值為具體的錯誤編碼.
a) 显示/隐藏SC64主窗口
cmd: 9
line 1: on: 顯示主窗體. off: 隱藏主窗體.
b) 设置当前代理
cmd: 10
Line 1 代理服务器地址,如 1.2.3.4
Line 2 代理服务器端口,如1080
Line 3 账号,此行如果为空则表示不需要账号
Line 4 密码,此行如果为空则表示不需要密码
Line 5 3是HTTP,4表示是socks4/4a,5表示是socks5,6是Shadowsocks
Line 6 加密方式,只用在ss代理中, 可选的值是: aes-256-cfb, aes-192-cfb,aes-128-cfb,rc4-md5,rc4,salsa20,chacha20
c) 启用/禁用代理功能 ( 即: SC64中的臨時禁用SC64的功能)
cmd: 11
line 1: on:启用代理功能;off:禁用代理功能
d) 启动应用程序
cmd: 12
Line 1 程序命令行
Line 2 工作目录
Line 3 启动参数
e) 活动探测( SC64當前是否仍在工作中, 是否卡死無響應)
cmd: 13
無packet body, length of packet body給0就行.
f) 设置代理规则
cmd: 14
第一行 代理指令
set: 设置代理规则
clear: 清除所有代理规则 ( 此指令只需一行 )
第二行 目标Hosts规则. 规则可以是:
一个IP地址, 如: 127.0.0.1
一个IP段,如: 192.168.1.1-192.168.1.100
如果为*号则表示匹配所有.
可以是多个IP或者多个IP段, 以;(分号)隔开. 例如:
192.168.1.1;10.0.0.1;139.12.10.1-139.12.10.100
第三行 目标PORTS规则, 规则可以是:
一个端口,如: 1080
一个端口段, 如: 8000-8010
如果为*号则表示匹配所有.
第四行 规则行为
proxy: 通过代理请求网络
direct: 直连
block: 阻止访问网络
注意: ip 与 port 是 AND 的关系. 例如: 同时指定了 IP为: 192.168.1.1 端口为: 80 则表示匹配到192.168.1.1:80的访问才执行规则.
注意: 必须先设置好规则, 再启动目标程序. 目标程序启动后中途改变规则不会实现生效.
因此, 如果需要设置为仅允许某些IP通过代理, 其它IP均不通过代理请求的话,可以发送指令如下 ( 例子中仅允许133.155.1.10-133.155.1.15 通过代理请求网络 , 其它所有请求均直连 ):
clear
add\r\n*\r\n*\r\ndirect
add\r\n133.155.1.10-133.155.1.15\r\n*\r\nproxy
g) 退出程序
cmd: 15
無packet body. 也不會有回複. SC64收到此指令直接退出.
-
您好,汇报一个情况,疑似bug。
实验环境:win10 , VS2015 , sockcap64 4.1
出现问题:新安装sockcap64 4.1,未在ui界面进行任何设置。通过命令行在后台启动软件,通过socket 编程控制行为:1、cmd 10 配置当前代理,2、cmd 14 设置代理规则,3、cmd 12 拉起软件,结果sockcap弹出窗口提示“未设置任何代理”。
如果我提前在ui界面设置一个任何代理,甚至为无效代理,那么可以拉起应用软件,并且顺利实现代理;
我认为这是一个bug,期望结果是 未在ui界面设置任何代理,仍然可以通过socket配置并拉起任何想代理的软件。
-
-
AuthorPosts
You must be logged in to reply to this topic.