2012-04-22 2 views
2

Я хочу получить информацию о том, как передаются параметры. Обычно я делаю запрос и проверяю вкладку параметров Firebug, какие параметры отправлены. Однако, когда я пытаюсь сделать это на следующем сайте (http://www.infraero.gov.br/voos/index_2.aspx), он не работает - я не вижу, какие параметры нужно повторить с помощью curl. Как я могу его получить? Я не уверен, но я думаю, что файлы cookie используются.Как воспроизвести запрос через cURL

EDIT

Я был в состоянии получить содержание запроса, но не мог понять. Кажется, он использует javascript для генерации правильного запроса. Как я могу воспроизвести этот запрос через cURL?

+0

Они используют пост ... там не было бы никаких «параметров». Используйте вкладку «net» для HTTPfox или firebug, чтобы просмотреть связь с низким уровнем HTTP, и вы точно увидите, что происходит через провод. –

+0

Он просто показывает заголовок запроса, а не его содержимое. Как я могу получить необходимую информацию для повторного воспроизведения этого запроса через завиток? –

+1

Данные POST поступают в тело запроса, а не в заголовки. например просмотрите вкладку «Контент» HTTPFox. –

ответ

1

Вы видели этот предыдущий вопрос cURL post data to asp.net page? Это может ответить на вопрос прямо там (все, что я сделал, это поиск «ASP.NET cURL»). И этот: Unable to load ASP.NET page using Python urllib2 рассказывает о Python, но он подходит к нему таким образом, который должен перевести на cURL.

Но для моих $ 0,02 я бы не стал пытаться распутать ASP.NET и __VIEWSTATE и javascript. Это абсолютное требование, которое вы используете cURL?

Я думаю, вам будет лучше использовать клиент, который больше похож на настоящий браузер и понимает javascript. Это немного работы, но это не так плохо, как кажется. Я сделал это раньше с http://watirwebdriver.com/ и коротким скриптом Ruby. Вот как это сделать с Python and Mechanize (это, вероятно, немного более легкий). http://phantomjs.org/ - еще один вариант, который вы используете с помощью javascript. Если вы Google «Скремблируете ASP.NET», вы увидите, что это общая проблема.

0

Вы не сказали, как вы хотите это сделать, но вы можете отправить запрос с завитком просто с завитка -d name1 = contents1 & name2 = contents2 [TARGETURL] и т.д.

Обратите внимание, что вы, вероятно, в первую очередь необходимо чтобы получить основную страницу и извлечь поле формы «__VIEWSTATE» и отправить обратно это (ОЧЕНЬ огромное) содержимое, чтобы получить ваше представление.

+0

Да, я знаю, как скрутить почтовый запрос. Я считаю, что моя проблема связана с этим «__VIEWSTATE». Я не привык к ASP, поэтому я понятия не имею, что это такое или как с этим бороться. Есть ли «ярлык», поэтому я могу отправить запрос, не углубляясь в его изучение? –

+0

Поскольку он заполнен как скрытое поле формы, вы можете предположить, что ваш запрос на завиток должен отправить его. Просто получите HTML-страницу, извлеките значение __VIEWSTATE и передайте его в свой запрос на завивание. –

Смежные вопросы