繁体   English   中英

如何使用C#获取JS值

[英]How to obtain JS values using C#

基本上,我需要“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 代码不在 WebRequest 中执行。 为此,您需要一个内置于每个浏览器中的 Javascript 解释器。 您可以使用像Jint这样的库在 C# 中评估 JavaScript。 但不推荐这样做,因为您需要将页面中的每个 JS 源文件传递到其中。

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

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

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

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM