【问题标题】:How to obtain JS values using C#如何使用 C# 获取 JS 值
【发布时间】:2020-07-13 13:21:26
【问题描述】:

基本上,我需要 "window["_securedTouchToken"] = [data] " 中的数据,但由于网站是用 javascript 编码的,而我的代码是用 C# 编写的,我不知道该怎么做。我目前也在使用 RestSharp 以及 NewtonsoftJson。

我的代码:

try
{
    var clienttest = new RestClient("https://static.securedtouch.com/sdk/pong.js?body=eyJwaW5nVmVyc2lvbiI6IjEuMi4wcCIsImFwcElkIjoid2lzaCIsImFwcFNlc3Npb25JZCI6IjJhYTRhMTg5OWVhZmEzZjQxNTY1MTFmODc3Njk4ZTI0MDI0ODA5MjQzY2E5YTdlMTU3NDI2M2QxZmUzMTM5ZWQiLCJkZXZpY2VJZCI6IklkLWY5Y2UzOTRlLThkNjMtNGE5OS1hNDM3LTVlMjIzYjRmMmMxYSIsImRldmljZVR5cGUiOiJHZW55bW90aW9uLUFuZHJvaWQtR29vZ2xlIE5leHVzIDVYIiwiY2xpZW50VmVyc2lvbiI6IjMuNC4wYSIsImFwcFZlcnNpb24iOiI0LjM4LjAgKDEyNDgpIn0%3D");
    clienttest.Proxy = new WebProxy(proxy.Proxy);

    var requesttest = new RestRequest(Method.GET);

    requesttest.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko");
    requesttest.AddHeader("Pragma", "no-cache");
    requesttest.AddHeader("Accept", "*/*");

    IRestResponse responsetest = clienttest.Execute(requesttest);
    var contenttest = responsetest.Content;

    Console.WriteLine(contenttest);
}
catch (WebException)
{

}

回复:

(function () {
    window["_securedTouchToken"] = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiYVkwVDRpLzN1MFUzcVZiMkllZVJDVEtuN0hrOGdjeHJlbEFheUdTRTB4dStQQ2VZK2Jqb09rT0lndDVaUUJvVmdJRnM0NmFnWk1FS3MrMVdsVjRwZW4xamNmVENnakt6VXZxazg5a1p1Uk8zS0JBcnRWd1U3Tmd2bzdvTk15ekVuYXBJT0haMkxzZlN5RHQ2OWJQVEdWekxiVHZrRVJnakM0azBkN0xnNFRZWUJoUzNRSTBmcGtwWjk5MkUxU3UwUnZsNVNES0lBSUhKMElYeVh6TEJzajlxQUJoZWo0NzdkZVNPMnZUWVhsd0lSVjYxTzZOUTUrQnd0aXVPQkc5bE5KL2hCSzlOUFVVRjFnUm8zMm85Z0E9PSIsImlhdCI6MTU4NTc2MTM1MCwiZXhwIjoxNTg1ODQ3NzUwfQ.tnrvmyniVy9gtG-n1PPGUx3bYU1gonYM2qID2l8x1ak';
    document.dispatchEvent(new CustomEvent('SecuredTouchTokenReadyEvent'));
})();

【问题讨论】:

    标签: javascript c# response


    【解决方案1】:

    JavaScript 代码不在 WebRequest 中执行。为此,您需要一个 Javascript 解释器,它内置在每个浏览器中。您可以使用 Jint 之类的库在 C# 中评估 JavaScript。但不建议这样做,因为您需要将 Page 中的每个 JS 源文件都传递到该页面中。

    我认为您需要的是CEFSharp,它基本上是一个可以嵌入到您的应用程序中的浏览器。 Good tutorial.

    如果你想使用 WebRequests 来实现它,你需要自己查看 JS 并对 JS 代码进行逆向工程以在 C# 中实现它。

    【讨论】:

      【解决方案2】:

      实际上,我今天晚些时候想出了一条出路。如果有人有类似的问题,这里有一个示例代码

      String St = "super exemple of string key : text I want to keep - end of my string";
      
      int pFrom = St.IndexOf("key : ") + "key : ".Length;
      int pTo = St.LastIndexOf(" - ");
      
      String result = St.Substring(pFrom, pTo - pFrom);
      

      【讨论】:

        猜你喜欢
        • 2022-01-19
        • 2019-07-23
        • 2016-05-04
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        相关资源
        最近更新 更多