Greis писал(а):и подобное утверждение ... как оказывается не всегда верно.
Ну вот тут я с тобой всё-таки не соглашусь. Утверждение
верно всегда.
Просто иногда за недостатком времени, умения, знаний либо чего-то ещё более простым оказывается использование для тех же целей WB.
А по-хорошему, надо расковыривать js-код на странице, чтобы выяснить какой именно запрос даёт тебе нужные данные. При помощи FireFox с его FireBug это сделать относительно просто.
Тогда даже не придётся парсить выданный HTML, потому что этот запрос отдаст тебе JSON:
- Код: Выделить всё
{"id":"12503549719251",
"js":
{"status":{"status":"ok","dataType":"mixed","run_time":"0.0174231529236"},
"result": {"mob_id":"20492", "name":"Kirunak's Guards", "level":"21", "sex":"0", "type":"warrior",
"attackrange":"40", "attacktype":"sword", "hp":"576","mp":"228","str":"40","int":"21",
"dex":"30","wit":"20","con":"43","men":"20","exp":"764","sp":"35","patk":"63","pdef":"99",
"matk":"31","mdef":"73","atkspd":"253","rhand":"68","lhand":"0","rhand_name":"Falchion",
"lhand_name":"","isUndead":"0","aggro":"0","race":"undead","icon":"spartoi","map_flag":"7","boss_flag":"0"},
"vars":{"mob_id":"20492"},
"inputVars":{"l2jz_query":"db.monster.main","mob_id":"20492"},
"js":""},
"text":""}
Запрос этот выглядит так:
http://www.graciafinal.com/load.php?L2Z ... 719251-xml+POST ( l2jz_query=db.monster.main&page=main&mob_id=20492 )
Т.е.
- Код: Выделить всё
Dim hr As New WinHttpRequest, post As String
post = "l2jz_query=db.monster.main&page=main&mob_id=20492"
hr.Open "POST", "http://www.graciafinal.com/load.php?L2ZSYSTEM=5aa3882fed48e5ad2c19a44af02cc3b4&JsHttpRequest=12503549719251-xml"
hr.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
hr.SetRequestHeader "Content-Length", Len(post)
hr.Send post
Debug.Print hr.GetAllResponseHeaders
Debug.Print hr.ResponseText
Переменная L2ZSYSTEM - ID Сессии - выдаётся сервером при первом обращении в виде Set-Cookie. Соответственно, сначала нужно сделать обычный GET-запрос к главной странице сайта, прочитать из куков ИД сессии, и дальше запрашивать всё, что угодно, используя его.
Как генерится переменная JsHttpRequest я не совсем понял, скорей всего рандом для обхода кеширования ответов браузером. Я их штук десять перепробовал разных порядков. Все работали.
Ну и?
UPD: Обновлён и исправлен текст POST-запроса. Странно, но тот сервер у меня и некорректный вариант нормально принимал. Мистика, блин.. ))