Проблема Windows WebBrowser с кодом Ajax на странице - c # - PullRequest
0 голосов
/ 13 марта 2011

Я загружаю сайт с его содержимым, используя веб-сканер, который я написал с помощью Microsoft WebBrowser.

Часть содержимого сайта отправляется только после некоторой проверки, отправленной со стороны клиента - я предполагаю, что его куки / сеансовые куки.

Когда я пытаюсь загрузить страницу с моего сканера, я вижу (с помощью Fiddler), что внутренняя ссылка для ajax отправляет «false» для одного из параметров, и данные не принимаются. Когда я пытаюсь выполнить то же действие из любого браузера, Fiddler показывает, что свойство отправляется как «1».

После дня тестирования любой лидер будет благодарен - есть ли способ манипулировать этим свойством? сажать печенье? любая другая идея?

После khunj ответа я добавляю заголовки из IE и из моего веб-браузера:

В обоих заголовках я удалил поля с одинаковым значением

Из IE:

GET /feed/prematch/1-1-234562-8527419630-1-2.dat HTTP/1.1
x-requested-with: XMLHttpRequest
Referer: http://www.mySite.com/ref=12345
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0)
Connection: Keep-Alive
Cookie: __utma=1.1088924975.1299439925.1299976891.1300010848.14; 
__utmz=1.1299439925.1.1.utmcsr=(direct)|utmccn=
(direct)|__utmb=2.1.10.1300010848; __utmc=136771054; user_cookie=63814658; 
user_hash=58b923a5a234ecb78b7cc8806a0371c5; user_time=1297166428; infobox_8=1; 
user_login_id=12345;  mySite=5e1c0u8g6qh41o2798ua2bfbi3

HTTP/1.1 200 OK
Date: Sun, 13 Mar 2011 10:07:38 GMT
Server: Apache
Last-Modified: Sun, 13 Mar 2011 10:07:25 GMT
ETag: "26a6d9-19df-49e5a5c9ed140"
Accept-Ranges: bytes
Content-Length: 6623
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Connection: close
Content-Type: text/plain
Content-Encoding: gzip

Из веб-браузера:

GET /feed/prematch/1-1-234562-8527419630-false-2.dat HTTP/1.1
x-requested-with: XMLHttpRequest
Referer: http://www.mySite.com/ref=12345
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0)
Connection: Keep-Alive
Cookie: __utma=1.1782626598.1299416994.1299974912.1300011023.129; 
__utmb=2.1.10.1300011023; __utmz=1.1299416994.1.1.utmcsr=
(direct)|utmccn=(direct)|__utmc=136771054; user_cookie=65192487; 
user_hash=6425034050442671103fdd614e4a2932; user_time=1299416986; 
user_full_time_zone=37;user_login_id=12345; mySite=q9qlqqm9bunm9siho32tdqdjo0


HTTP/1.1 404 Not Found
Date: Sun, 13 Mar 2011 10:10:33 GMT
Server: Apache
Content-Length: 313
Connection: close
Content-Type: text/html; charset=iso-8859-1

Заранее спасибо,

Oz.

Ответы [ 4 ]

0 голосов
/ 14 марта 2011

Я решил свою проблему, используя Fiddler в качестве прокси-сервера и определяя пользовательский ответ на сервер, который, когда свойство PathAndQuery содержит адрес сайта, заменяет «false» на «1». Не самое элегантное решение, но подходит для моей проблемы.

Я узнал больше всего из этих 2 страниц:

FiddlerScript CookBook

Сайт, который учит конкретному файлу customRules.js и полю, которое мне нужно отредактировать

Спасибо за помощь, Oz.

0 голосов
/ 13 марта 2011

По какой-то причине я считаю, что веб-браузер только на 99,9% совместим с IE, а не на 100%. Это может быть связано с различиями DOM, отсутствующей строкой состояния и т. Д. - я не уверен. Обходной путь - автоматизировать веб-сайт напрямую через веб-браузер.

0 голосов
/ 13 марта 2011

Один простой элемент для проверки: совместима ли ваша пользовательская строка с IE: http://show -ip.net / useragent /

0 голосов
/ 13 марта 2011

Ну, сервер явно обрабатывает ваш запрос от вашего сканера по-другому. Поскольку у вас уже есть задействованный fiddler, чем отличаются заголовки ваших запросов при выполнении запроса от IE от использования вашего сканера. Причина, по которой я говорю IE, заключается в том, что для своей работы элемент управления webbrowser использует тот же механизм, что и IE.

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