LINUX.ORG.RU

Почему python-скрипт получает ответы от сервера не такие, как браузер?

 , , ,


0

1

Привет, ЛОР! Начинаю вникать в web-development, так что вот нубовопрос:

http://storage3.static.itmages.ru/i/15/0131/h_1422700236_8093379_40bbc2e91f.png

Зеленым отмечены запросы, сделанные через firefox. Страница успешно загрузилась, я отправил запрос и получил корректный ответ.

Ниже я пытаюсь повторить то же самое питоньим скриптом, используя библиотеку requests.

Как видно на скриншоте, я получаю совсем другие ответы от сервера еще на момент первого GET, размер body другой. Никак не могу понять, что происходит и почему так. Соответственно, в конце я не получаю желаемого результата.

★★

Последнее исправление: kir64 (всего исправлений: 1)

Ответ на: комментарий от svobodka_fighter

Меняю.

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36'
}

И в конце каждого запроса дописываю «headers=headers»

kir64 ★★
() автор топика

Кирюша, ты серьезно думаешь что в твоем йоба-дебаггере размером 1366 на 768 можно увидеть что-то полезное?

entefeed ☆☆☆
()

Сайт ajax использует, наверное. Через requests ничего не получится, т.к. эта библиотека не поддерживает javascript (оно и понятно, для этой библиотеки это не нужно), поэтому нужные данные не подгружаются. Попробуй webdriver.

Plcmn
()
Ответ на: комментарий от Plcmn

Если ты отключишь в браузере javascript у тебя должна получиться примерно та же картина.

Plcmn
()
Ответ на: комментарий от Plcmn

Да, использует ajax. Странно, в задании указано именно с использованием requests решить эту задачу.

kir64 ★★
() автор топика
Ответ на: комментарий от Deleted

Да, так и придется. Спасибо.

kir64 ★★
() автор топика
Ответ на: комментарий от entefeed

дебаггере размером 1366 на 768

Главное — не размер дебаггера, а умение им пользоваться.

i-rinat ★★★★★
()
Ответ на: комментарий от Deleted

Выполнил ajax-запросы вручную в скрипте и получил желаемое. Еще раз спасибо!

kir64 ★★
() автор топика

о, немного не в тему, но раз ajax из скриптов
друзья, как дернуть ajax из curl'а(тот, который бинарем, а не пхп), просто в веб-инспекторе глянуть че в ПОСТе улетает и по каким урлам, и то же самое слать курлом(ну с куками, наверное ж, еще правильными)?

ii343hbka ★★★
()
Ответ на: комментарий от ii343hbka

Да, всё так. Куки спокойно запрашиваются, сохраняются в файл, потом с последующими запросами из этого файла отсылаются, там тоже всё просто. Если нужен работающий пример баш-скрипта - смогу завтра выложить, я что-то такое писал примерно с год назад. Хотя гуглится на раз-два.

kir64 ★★
() автор топика
Ответ на: комментарий от ii343hbka

Тогда его вообще в клочья порвать должно.

kir64 ★★
() автор топика
Ответ на: комментарий от ii343hbka

Всё намного проще. В Firefox нажать F12, перейти на вкладку «Network», произвести нужный запрос, выбрать его в списке запросов. В его контекстном меню будет пункт «Copy as cURL». Можно сразу вставлять в терминал, но я сначала удаляю лишние хедеры, оставляя только нужные. Не знаю, работает ли в Chromium.

xenith
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.