2016-11-23 2 views
0

Я пытаюсь написать сценарий Python, который регистрируется на сайте для меня и загружает мои сообщения. Я использую библиотеку «запросов» и успешно могу войти в систему с сеансомПочему запросы python получают разные результаты, чем Ajax

На сайте используется js/Ajax для загрузки фактической клиентской стороны сообщений после загрузки страницы сообщений и используется разбиение на страницы, чтобы получить бесконечный список эффектов сообщений.

URL-адрес страницы сообщений находится в форме https://website.com/messages. и эта страница содержит вызов Ajax, который retrives в messsages так:

$.ajax({ 
     url: '/messages?mailbox=' + mailbox + optional params 
    }).done(function(data) { 
     urlLazyLoading = data.next_page_url; 
     $.each(data, function(i, v) { 
      //from this point on, data for each message can be 
      //accessed using the v object as such: 
      //v.sender, v.date, v.last_message, etc 
      //and the <ul> element is populated with '<li>'s 

Но когда я пытаюсь получить доступ к одной URL в Python (после того, как я LoggedIn) как таковой:

session.get('https://website.com/messages?mailbox=inbox') 

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

Единственный параметр, переданный ajax в приведенном выше коде, равен url, поэтому он должен просто сделать простой запрос GET, что я и делаю.

Возможно ли, что, возможно, где-то еще в коде ajax устанавливается по умолчанию POST или есть некоторые другие настройки, отличные от настроек по умолчанию?

или сервер каким-то образом обнаруживает, что один запрос поступает из ajax, а другой - из сеансов? возможно, используя user-agent?

ответ

0

Got it!

Ajax посылает значение заголовка по умолчанию:

{ 'X-Requested-С': ''} XMLHttpRequest

Я добавил, что в и альт

headers = {'X-Requested-With': 'XMLHttpRequest'} 
    r = s.get("https://website.com/messages?mailbox=inbox",headers=headers) 
Смежные вопросы