Как получить JS значений, используя C# - PullRequest
0 голосов
/ 01 апреля 2020

В основном мне нужны данные внутри "window [" _ securedTouchToken "] = [data]", но так как сайт закодирован в javascript, а мой код в C#, я понятия не имею, что делать. В настоящее время я использую RestSharp, а также Newtonsoft Json тоже.

Мой код:

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'));
})();

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

На самом деле, я нашел выход позже, чем сегодня. Если у кого-то есть подобная проблема, вот пример кода

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);
0 голосов
/ 01 апреля 2020

JavaScript Код не выполняется в веб-запросе. Для этого вам потребуется интерпретатор Javascript, который встроен в каждый браузер. Вы можете оценить JavaScript в C#, используя такие библиотеки, как Jint . Но это не рекомендуется, потому что вам нужно было бы передать каждый JS исходный файл со страницы в это.

Я думаю, что вам нужно CEFSharp , который в основном является браузером, который Вы можете встроить в свое приложение. Хороший учебник. .

Если вы хотите сделать это с помощью WebRequests, вам нужно взглянуть на JS самостоятельно и перепроектировать код JS, чтобы реализовать его в C#.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...