2015-04-28 9 views
9

Byłem w stanie wyświetlić atrybuty PreparedRequest wysyłane przez botocore, ale zastanawiam się, w jaki sposób mogę wyświetlić dokładny ciąg żądania, który jest wysyłany do AWS. Potrzebuję dokładnego ciągu żądania, aby móc go porównać z inną aplikacją, z którą testuję połączenia AWS.Jak wyświetlić kod żądania BOTO HTTPS

Odpowiedz

3

To, co prawdopodobnie chcesz zrobić, to wysłać zapytanie za pośrednictwem serwera proxy (mitmproxy, squid). Następnie sprawdź proxy, co zostało wysłane. Ponieważ dane HTTPS są zaszyfrowane, należy je najpierw odszyfrować, a następnie zarejestrować odpowiedź, a następnie zaszyfrować ją i wysłać do AWS. Jedną z opcji jest użycie mitmproxy. (To naprawdę łatwe do zainstalowania)

  1. Run mitmproxy
  2. Otwórz inny proxy terminala i wskaż mitmproxys port:

    export http_proxy=127.0.0.1:8080 
    export https_proxy=$http_proxy 
    
  3. Następnie ustaw verify=False podczas tworzenia sesji/klienta

    In [1]: import botocore.session 
    
    In [2]: client = botocore.session.Session().create_client('elasticache', verify=False) 
    
  4. Wyślij zapytanie i przejrzyj wyjście mitmproxy

    In [3]: client.describe_cache_engine_versions() 
    
  5. Wynik powinien być podobny do tego:

    Host:    elasticache.us-east-1.amazonaws.com 
    Accept-Encoding: identity 
    Content-Length: 53 
    Content-Type:  application/x-www-form-urlencoded 
    Authorization: AWS4-HMAC-SHA256 Credential=FOOOOOO/20150428/us-east-1/elasticache/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=BAAAAAAR 
    X-Amz-Date:  20150428T213004Z 
    User-Agent:  Botocore/0.103.0 Python/2.7.6 Linux/3.13.0-49-generic 
    
<?xml version='1.0' encoding='UTF-8'?> 
<DescribeCacheEngineVersionsResponse 
xmlns="http://elasticache.amazonaws.com/doc/2015-02-02/"> 
<DescribeCacheEngineVersionsResult> 
    <CacheEngineVersions> 
     <CacheEngineVersion> 
     <CacheParameterGroupFamily>memcached1.4</CacheParameterGroupFamily> 
    <Engine>memcached</Engine> 
    <CacheEngineVersionDescription>memcached version 1.4.14</CacheEngineVersionDescription> 
    <CacheEngineDescription>memcached</CacheEngineDescription> 
    <EngineVersion>1.4.14</EngineVersion> 
+0

Nie udało mi się szybko zainstalować mitmproxy przy użyciu pip, ALE użyłem twojego pomysłu i uruchomiłem żądanie z Burp Suite. Byłem w stanie zobaczyć skąd pochodzi mój błąd. Dziękuję za pomysł! – zachhilbert

14

Można również włączyć rejestrowanie debugowania w boto3. To będzie rejestrować wszystkie żądania i odpowiedzi, a także wiele innych rzeczy. Jego nieco niejasne, aby włączyć go:

import boto3 
boto3.set_stream_logger(name='botocore') 

Powodem trzeba określić botocore jak nazwa logowania jest to, że wszystko rzeczywistych żądań i odpowiedzi zdarzyć w warstwie botocore.

+0

Próbowałem tego przed użyciem proxy. Problem polega na tym, że nie rejestruje on faktycznego, pełnego żądania wysłanego na serwer, tylko tych komponentów, które wykorzystuje do obliczenia podpisu, usługi itp. – zachhilbert

Powiązane problemy