Страницы: 1
RSS
Парсинг сайта arbitr VBA, Не получается получить правильный отклик от сайта
 
Добрый день. Третий день мучаю проблему и никак не могу разобраться.
Излазил много форумов, ответ найти не смог. Задача получить ответ с сайта ras arbitr ru.

Вот тот код, который написан:

Код
Sub arbitr()

 

Dim httpObject As Object

Dim
sGetResult As Variant

'Set
httpObject = CreateObject("MSXML2.XMLHTTP")

Set
httpObject = CreateObject("Msxml2.ServerXMLHTTP.6.0")

'Set
httpObject = CreateObject("WinHttp.WinHttpRequest.5.1")

 

httpObject.Open
"POST", "http://ras.arbitr.ru/Ras/Search", False

httpObject.setRequestHeader
"Host", "ras.arbitr.ru"

httpObject.setRequestHeader
"Connection", "keep-alive"

httpObject.setRequestHeader
"Content-Length", "201"

httpObject.setRequestHeader
"Accept", "application/json, text/javascript, */*"

httpObject.setRequestHeader
"X-Requested-With", "XMLHttpRequest"

httpObject.setRequestHeader
"User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"

httpObject.setRequestHeader
"Content-Type", "application/json" '; charset=utf-8"

httpObject.setRequestHeader
"Origin", "https://ras.arbitr.ru"

httpObject.setRequestHeader
"Sec-Fetch-Site", "same-Origin"

httpObject.setRequestHeader
"Sec-Fetch-Mode", "cors"

httpObject.setRequestHeader
"Sec-Fetch-Dest", "empty"

httpObject.setRequestHeader
"Referer", "https://ras.arbitr.ru/"

'httpObject.setRequestHeader
"Accept-Encoding", "gzip , deflate, br"

httpObject.setRequestHeader
"Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"

httpObject.setRequestHeader
"Cookie", _

"ASP.NET_SessionId=lfd20vhxrqz1y01towgyovgz;
CUID=c1d8de6b-b120-4c38-80c5-b00314807c75:pYVAtsY2lnncvav/Ih/t5w==; __utmz=14300007.1642747586.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided);
__utmc=14300007; _ga=GA1.2.855320026.1642747586; tmr_lvidTS=1642747788613;
tmr_lvid=38f17b338dbe5024194dc13ad97f1368; _ym_uid=1642747789708820668;
_ym_d=1642747789;
pr_fp=e96f3347f23da682373ee1c149eda3ce025ec93c053a947e4fec828b166330d3;
is_agree_privacy_policy=true;
.ASPXAUTH=48089F490BB8A2ADF54199E1042EC1EB883678393734D8693A96228A0BBF176B5A39E8B407FA2E2F444B93CD3C2DB2FA1FE0F54E362A35A783E4789F221799A3936B92980E96D06D668526AA05362ADF1D2F83A3C32FB6745242F302BC63B4B0BBCE45B5;
_gid=GA1.2.517942562.1643617454;
__utma=14300007.855320026.1642747586.1643093404.1643635736.4;
KadLVCards=%d0%9041-58578%2f2021; _fbp=fb.1.1643636579482.1085817934;
_ym_isad=2; tmr_detect=0%7C1643693617619;
rcid=839229d1-138c-4f49-8920-cbe70a95b100;
wasm=d1ed79c6d1cdb40f83ada9318c1cd9b0; tmr_reqNum=65; _gat=1"

payload1 =
"{""GroupByCase"":false,""Count"":25,""Page"":1,""Courts"":[""ASMO""],""DateFrom"":""2000-01-01T00:00:00"",""DateTo"":""2030-01-01T23:59:59"",""Sides"":[],""Judges"":[],""Cases"":[],""Text"":""""}"

Dim
payload() As Byte

payload =
StrConv(payload1, vbFromUnicode)

httpObject.Send
(payload)

sGetResult =
httpObject.responseText

Debug.Print
sGetResult

Set
httpObject = Nothing

 

End Sub

В ответ на запрос через браузер получаю JSON с 25 записями о делах. В ответ на запрос из Excel получаю не связанную с payload информацию.

 
Добрый день. Третий день мучаю проблему и никак не могу разобраться. Излазил много форумов, ответ найти не смог. Задача получить ответ с сайта ras arbitr ru. Код во вложении.

В ответ на запрос через браузер получаю JSON с 25 записями о делах. В результате запроса из VBA только 1 запись не связанную с передаваемыми параметрами.
Непонятны 2 вещи:
почему не учитываются мои параметры - payload?
почему даже при пустом запросе возвращается только одна строка?
 
В плане кода - вы всё правильно сделали
Запрос к сайту идет такой же, как из браузера
(можно, конечно, через программу Fiddler сравнить запрос из браузера IE и из макроса, — вдруг там будут какие-то отличия)

Думаю, дело в защите сайта от роботов (она там точно есть)
Возможно, корректный ответ выдаётся только в сжатом виде (gzip, deflate, br) - при запросе из браузера все способы сжатия поддерживаются, а макрос с поддержкой gzip будет непрост
 
Игорь, спасибо за ответ.
Цитата
можно, конечно, через программу Fiddler сравнить запрос из браузера IE и из макроса, — вдруг там будут какие-то отличия
для разбора я пользовался DevTools  в Chrome. Надеюсь разницы особо нет.
Цитата
написал:
макрос с поддержкой gzip будет непрост
А есть пример, ссылка на гдепочитать. Буду очень благодарен.
 
А кто Вам сказал, что куки не меняются.
Сначала надо сделать get запрос, получить куки, потом уже идти дальше
 
Мне никто этого еще не говорил. В моем понимании куки имеют срок действия, поэтому я их регулярно обновлял в своем Post запросе. Это не помогало. А каким образом с помощью GET запроса я смог бы обновлять кукуи? Есть откуда списать?
 
Хотел посмотреть, на третий запрос получил  <title>Forbidden</title>
ищите Set-Cookie: в httpObject.getAllResponseHeaders
 
Цитата
написал:
Set-Cookie: в httpObject.getAllResponseHeaders
При  GET запросе получаем набор как на картинке во вложении (аналогичные параметры и excel). Потом при отправлении запроса (в браузере) отправляется уже другой набор. Откуда взять нижние параметры я не понимаю.
 
Есть возможность использовать в VBA-коде работу через Internet Explorer. Его запросы сайтам тяжелее распознать как действия робота. Она медленнее, конечно, но вдруг поможет?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Цитата
написал:
Есть возможность использовать в VBA-коде работу через Internet Explorer
Очевидно они (разработчики) это тоже знают и при запросе через IE появляется капча.
 
Там предупреждение
В связи с проведением технических работ по обновлению протокола аутентификации ЕСИА временно могут быть недоступны сервисы портала с 18:00 01.02.2022 МСК по 23:59 04.02.2022 МСК.
 
Цитата
написал:
Там предупреждение
Да, при первом заходе. При повторном обращении (с куками) сообщение не появляется.
Страницы: 1
Наверх