0

名为ThinkOrSwim的交易平台(由TD Ameritrade提供)正在使用一个特殊的 URL 来共享指标脚本,直接进入交易平台。但是,这些脚本只是文本文件,因此您应该能够使用curl下载这些脚本。但是服务器端似乎有某种过滤器来检查脚本请求的内容(或谁)。

例如,这里是一个脚本的 URL http://tos.mx/A1PZUml,它应该显示许多不同的移动平均线。对于实际脚本的示例,.

问:如何使用 curl 直接下载 TOS 代码?

PS。我已经添加了 SO 标签thinkorswim,因为平台有它自己的语言thinkScript,已经添加到 SO 标签中。


更新:从这里npthinkorswim.dll查看文件的内容nptossc.dll,它似乎使用了至少 3 种不同的自定义且未记录的MIME 类型:

x-scheme-handler/tossc
application/x-tossc
application/x-thinkorswim

更新:2021-04-24

我在这里取得了一些进步。

// npthinkorswim.dll 
NoRemove MIME {
    NoRemove Database {
        NoRemove 'Content Type' {
            'application/x-thinkorswim' = s 'thinkorswim loader' {
                val Extension = s ''
                val CLSID = s '{79b4acff-94d2-58c5-baf6-23df99c7fcba}'
            }
        }
    }
}

// nptossc.dll
NoRemove MIME {
    NoRemove Database {
        NoRemove 'Content Type' {
            'application/x-tossc' = s 'thinkDesktop configuration loader' {
                val Extension = s ''
                val CLSID = s '{dcc9a6f3-492c-5f51-a65d-3dd92b26c165}'
            }
        }
    }
}

您应该可以运行该应用程序并使用以下任何一种导入脚本:

# To launch from anywhere (when java is installed)
javaw.exe -cp "C:\Program Files (x86)\thinkorswim\suit\1968.2.0\tos-suit-1968.2.0.jar" com.devexperts.jnlp.platform.impl.windows.WindowsSharedConfigurationLauncher SharedConfigurationLink A1PZUml

# To launch from ToS directory
.\thinkorswim.exe AutologinLink A1PZUml
.\thinkorswim.exe SharedConfigurationLink tossc:A1PZUml

但是,这仍然没有产生任何关于如何使用 curl 获取脚本的信息。

4

1 回答 1

1

TOS 使用自定义协议 ,tossc:来处理共享脚本请求。转到您提供的 URL http://tos.mx/A1PZUml,服务器会返回一个网页,其中包含用于在 TOS 应用程序中打开脚本的按钮和说明。

考虑到该网页上的代码,例如单击在 thinkorswim 中查看按钮,将使用 href: tossc:A1PZUml。这是用于打开带有链接的应用程序的自定义 URL。

该页面的 JavaScript 包含用于检查tossc协议的 mimetype 的代码:

var protocol = 'tossc';
var protocolName = protocol;
for (var i = 0; i < navigator.mimeTypes.length; i++) {
    if ("tossc" == navigator.mimeTypes[i].description) {
        navigator.tosscSupported = true;
    }
}

我不是curl专家,但看起来你必须能够模仿tosscmimetype/protocol 的存在才能检索实际的脚本内容。

否则,看起来服务器只是简单地响应用户使用脚本标识符打开应用程序的方式。一旦使用该标识符打开应用程序,我猜该应用程序会回到它自己的服务器以提取该特定脚本。

于 2021-03-22T20:28:12.687 回答