2013-05-02 2 views
1

(Это дополнительный вопрос к this one)Как я могу видеть фактические данные Запросы отправляются по проводу?

Как я могу сказать urllib3 войти ПОЛНЫЙ запрос, в том числе, но не ограничиваясь ими:

  • URL
  • запроса параметров
  • корпус
  • и ничего другого, который отправляется в запросе (я не уверен, что есть что-нибудь еще, но если есть что-то еще, я также хочу, чтобы увидеть его)

У меня возникли проблемы с подключением к LinkedIn с OAuth (а аналогичная реализация работает с Google и Facebook), и я хотел бы видеть точно какие запросы отправляются. Я подозреваю, что auth_token не предоставляется, но я должен подтвердить это. Для этого мне нужно urllib3, чтобы показать полные запросы, поскольку они превышают HTTPS, и я не могу проанализировать сетевой трафик, чтобы увидеть их (сквозное шифрование).

+0

Вы должны потратить некоторое время на изучение API запросов; Я замечаю много ваших вопросов, на которые вы могли бы ответить, если вы прочтете документацию о рахе и запросах. Например, доступ к объекту «PreparedRequest» из объекта «Response» полностью обсуждается в документации «Запросы». – maxcountryman

+1

Уверен, что вы правы. Если бы у меня было время, чтобы прочитать документацию Запросов, urrlib3 и rauth (и любую другую зависимость), запомните все эти детали и примените их к моему конкретному случаю, решив, как решить мою конкретную проблему, я бы решил это сам , Черт, мне никогда не понадобится Stackoverflow! Меня даже не интересует контент запросов: я просто пытался заставить OAuth2 работать с linkedin, что, как ни странно, ожидает oauth2_access_token, а не access_token, значение по умолчанию в rauth (которое нельзя переопределить) и не хочет иметь токен-носитель в заголовке. – dangonfast

+1

И просто уточнить. То, как я это вижу, вы эксперт в своей библиотеке. Не я. Я - и другие - нуждаются в вашей помощи (которую вы можете дать или нет) Я предполагаю, что вам нужна помощь от других по другим вопросам, и что вы не являетесь экспертом во всех областях. Так часто вы будете задавать глупые или очевидные вопросы. По крайней мере, я это делаю. Так что да, вы можете жаловаться, что я задаю глупые вопросы (это не самый глупый вопрос, который я задал), но я уже это знал. Где-то где-то есть ответ на мой вопрос. Я просто не знаю, где, и это (для меня) правильное место, чтобы спросить. – dangonfast

ответ

2

Вы можете получить доступ к объекту PreparedRequest, который был фактически отправлен после факта запроса с использованием устройства доступа request, например. print dir(r.request).

+0

Для этого требуется доступ к самому ответу, который, как я считаю, OP не имеет. –

+0

Если он использует рауту, он это делает. – maxcountryman

+0

Я просто возьму ваше слово за это, я не пользуюсь самой библиотекой. –

0

Вы можете взломать requests hooks system вместо, а затем использовать это, чтобы отслеживать ответы и их запросы:

from requests import hooks 


_orig_default_hooks = hooks.default_hooks 


def my_default_hooks(): 
    hooks = _orig_default_hooks() 
    hooks['response'].append(response_hook) 
    return hooks 


hooks.default_hooks = my_default_hooks 


# requests.models is imported by the requests package, so we need to ensure it's reference 
# to default_hooks is updated too. 
import requests.models 
requests.models.default_hooks = my_default_hooks 


def response_hook(r, **kw): 
    req = r.request 
    print req.headers 

reqeuests.hooks.default_hooks() функции вызываются для каждого запрос, созданных и впрыскивания собственного крючка response события, которое вы получить каждый полученный ответ. Ответы имеют атрибут .request, который является экземпляром PreparedRequest, на котором вы найдете атрибуты .headers и .body для вашего осмотра.

+0

Это выглядит интересно. Я посмотрю. – dangonfast

+0

И только для информации, я также нашел эту дискуссию по трекеру urrlib3: https://github.com/shazow/urllib3/issues/107.Еще не уверен, что с этим делать. – dangonfast

+0

@gonvaled: ah, 'httplib' - это Python 2, переименованный в' http.client' в Python 3, конечно. –

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