@6ReD6

Как включить JavaScript в макросе на VBA?

Добрый день! При попытке получить данные в формате JSON, приходит вот такое тело ответа:

<!doctype html><html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="shortcut icon" href="/poib/signin/favicon.ico"><link rel="stylesheet" href="/poib/signin/styles/fonts.css"><link rel="stylesheet" href="/poib/signin/styles/normalize.css"><link rel="stylesheet" href="/poib/signin/styles/global.css"><title>Вход в систему</title>
</head>
<body><noscript><b>You need to enable JavaScript to run this app</b><i></i>.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,u,f=r[0],l=r[1],p=r[2],c=0,s=[];c<f.length;c++)u=f[c],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&s.push(o[u][0]),o[u]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(a&&a(r);s.length;)s.shift()();return i.push.apply(i,p||[]),t()}function t(){for(var e,r=0;r<i.length;r++){for(var t=i[r],n=!0,f=1;f<t.length;f++){var l=t[f];0!==o[l]&&(n=!1)}n&&(i.splice(r--,1),e=u(u.s=t[0]))}retu
rn e}var n={},o={1:0},i=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,function(r){return e[r]}.bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="/poib/signin/";var f=this["webpackJsonppoib-signin-front"]=this["webpackJsonppoib-signin-front"]||[],l=f.push.bind(f);f
.push=r,f=f.slice();for(var p=0;p<f.length;p++)r(f[p]);var a=l;t()}([])</script><script src="/poib/signin/static/js/2.cda92c79.chunk.js"></script><script src="/poib/signin/static/js/main.8bcc881a.chunk.js"></script>
</body>
</html>


Я так понял вот из этой строчки You need to enable JavaScript to run this app, что он говорит включить JavaScript, но как это сделать я не знаю. Если в запросе передаешь cookie, то рамках текущей сессии ответ приходит нормальный, но если перезагрузить тачку, то с этими же cookie снова возвращается ответ который я укзал выше. Если кто парсил сайты через vba или просто знает как это обойти буду очень признателен за помощь.
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
@rPman
Если говорить универсально, то для этого требуется не конкретно javascript а полноценный браузер.

Посмотри, нет ли там компонента WebBrowser (я давно не лез в эти адовые дебри ископаемых технологий майкрософта), он использует штатный internet explorer сейчас это 11 версия, и он будет ругаться что переходите на edge (придется удалить эту компоненту-уведомление в панели управления в свойства браузера и это не просто, она будет возвращаться сама).

Но нужно понимать что если владелец сайта поставит проверку на IE да и банально использует несовместимые фичи современных браузеров, что вероятнее, то работать как ожидается не будет.

Но сам браузер можно использовать как запускалку javascript, формируя страницу самостоятельно (сформировав ссылку через data uri например) либо использовать функционал добавления скрипта.

p.s. excell и vba самый худший способ решать твою задачу.
Сейчас такие задачи решают с помощью selenium и современных языков программирования
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы