Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » помогите с Microsoft.XMLHTTP, получаю ошибку 403

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
извиняюсь, если не в то место пишу, кто-то ссылался на вебпрограммирование, но такого раздела на нашел
 
открываю страницу http://www.petrolesport.ru/services_info.php
ввожу данные HMCU9104979 в окошко INPUT, жму НАЙТИ
результат на экране
Делаю на VBA в Excel, посмотрел сначала сниффером, что запашивается, делаю все также (или не также ? в setRequestHeader пихал все, что можно)
Получаю через GET страницу http://www.petrolesport.ru/services_info.php
в ней есть 2 идентификатора SID (SID = "32байта данных" ) и BID такой же, вытаскиваю их  
пытаюсь получить 2ю страницу через GET - получаю ошибку 403
Код ниже
 
Сразу появляется вопрос
- может ли сервер определить, кто запрашивает данные, его страница или кто другой  
 
Public Sub OpenSIte()
 
Set http = CreateObject("Microsoft.XMLHTTP")
http.Open "GET", "http://www.petrolesport.ru/services_info.php", False
http.setRequestHeader "If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 UTC"
http.send
 
response = http.responsetext
possid = InStr(1, response, "sid = '") + 7
sid = Mid(response, possid, 32)
posbid = InStr(1, response, "bid = '") + 7
bid = Mid(response, posbid, 32)
 
http.Open "GET", "http://www.petrolesport.ru/GetContInfo.php?q=EMCU1216305&sid=" + sid + "&bid=" + bid, False
http.setRequestHeader "If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 UTC"
http.send
 
If http.Status = 403 Then MsgBox ("Error")
 
Set http = Nothing
 
End Sub

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 23:12 11-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kok80

Цитата:
может ли сервер определить, кто запрашивает данные, его страница или кто другой

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:15 11-12-2013
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так я и прошу найти ошибку, всё перепробовал, больше ничего не могу придумать
 
Добавлено:
не помогает, все со снифера взял:
http.Open "GET", "http://www.petrolesport.ru/GetContInfo.php?q=EMCU1216305&sid=" + sid + "&bid=" + bid, False
http.setRequestHeader "Accept", "*/*"
http.setRequestHeader "Referer", "http://www.petrolesport.ru/services_info.php"
http.setRequestHeader "Accept-Language", "ru"
http.setRequestHeader "Accept-Encoding", "gzip, deflate"
http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; MAARJS)"
http.setRequestHeader "Host", "www.petrolesport.ru"
http.setRequestHeader "DNT", "1"
http.setRequestHeader "Connection", "Keep-Alive"
http.setRequestHeader "If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 UTC"
http.send

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 23:46 11-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kok80

Цитата:
так я и прошу найти ошибку, всё перепробовал, больше ничего не могу придумать  

дык в данном случае у вас нет указания, что это xmlhttp запрос (проще говоря - AJAX)
В такой ситуации заголовки несколько иные, к примеру есть поле
Цитата:
X-Requested-With:XMLHttpRequest
, а скрипт сайта может это проверять.
ps: сайт пока так сильно тормозит, что посмотреть ничего толком нельзя
pps: вы что то не так отправляете с заголовками.. вот это (на PHP, забирает данные без проблем) - проверьте, что нигде нет русских символов в заголовках, либо вставляются двоеточия где надо и так далее..
Подробнее...
403 выдает если неправильно сформированы заголовки, хотя сама страница формы при этом выдается нормально.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:43 12-12-2013 | Исправлено: Cheery, 01:39 12-12-2013
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кажется, нашел в чем дело. в XMLHTTP задаю referer "http://www.petrolesport.ru/services_info.php", а он его не отправляет! Проверил через CommView. Меняю заголовок с referer на referer2 - отправляет. В вашем скрипте поменял referer на другой адрес - тот же 403. Теперь вопрос  - как же отправить правильный реферер ? Возможно ли заставить XMLHTTP это сделать ?
 
ps стоку X-Requested-With:XMLHttpRequest нигде не смог увидеть (в снифере)

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 01:01 16-12-2013
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в итоге зарегистрировал на бесплатном хостниге с php адрес, кинул туда скрипт, excel обычным GET получает этот php, который отправляет нужный referer и получает с конечного сайта ответ

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 17:47 17-12-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » помогите с Microsoft.XMLHTTP, получаю ошибку 403


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru