首页 信息反馈区 经验分享(Sharing experiences) 如何將SocksCap64整合到你的軟件中去?(通過Socket控制SocksCap64軟件的一些行為?)

标签: ,

该话题包含 2 replies,有 2 voices,并且由 Super admin Super admin4 周 前 最后一次更新。

  • 作者
    帖子
  • Super admin
    Keymaster
    #1 Super admin #5717

    如何將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收到此指令直接退出.

    • 该话题由 Super admin Super admin 于 1 年, 9 月 前 修正。
    • 该话题由 Super admin Super admin 于 1 年, 9 月 前 修正。
    • 该话题由 Super admin Super admin 于 1 年, 9 月 前 修正。

  • Participant
    #2 waitray #29047

    您好,汇报一个情况,疑似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配置并拉起任何想代理的软件。

抱歉,回复评论必需登录。