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
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)
- Run mitmproxy
Otwórz inny proxy terminala i wskaż mitmproxys port:
export http_proxy=127.0.0.1:8080 export https_proxy=$http_proxy
Następnie ustaw
verify=False
podczas tworzenia sesji/klientaIn [1]: import botocore.session In [2]: client = botocore.session.Session().create_client('elasticache', verify=False)
Wyślij zapytanie i przejrzyj wyjście mitmproxy
In [3]: client.describe_cache_engine_versions()
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>
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.
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
- 1. Żądania iOS HTTPS 101
- 2. Żądania HTTPS w Ruby
- 3. . Żądania https https w różnych protokołach bezpieczeństwa w wątkach
- 4. Wyślij HTTPS żądania POST do serwera
- 5. Wyłącz rejestrowanie boto bez modyfikowania plików boto
- 6. Jak wyświetlić kod źródłowy wewnątrz pliku JAR?
- 7. Jak wyświetlić kod źródłowy R (przetwarzanie wstępne)
- 8. Jak wyświetlić kod czasownika w J
- 9. Jak wyświetlić kod Unicode w SVG?
- 10. Jak wyświetlić kod LaTeX w dokumencie LaTeX?
- 11. Jak wyświetlić kod metody oznaczonej jako MethodImplOptions.InternalCall?
- 12. Jak ręcznie wysyłać żądania POST za http/https?
- 13. Jak połączyć boto z podróbkami3
- 14. Jak zamknąć połączenie Boto S3?
- 15. Jak zaktualizować python lib boto?
- 16. HTTP kod błędu: 302 Dzwoniąc https WebService
- 17. Boto s3 get_metadata
- 18. Jak wyświetlić wszystkie żądania ściągania Git w repozytoriach w TFS?
- 19. Jak wyświetlić animowaną ikonę podczas przetwarzania żądania Ajax - Rails 3
- 20. Jak wyświetlić animację przetwarzania/spinner podczas żądania ajax?
- 21. WhatsApp kod żądania api nie wykonujący i nie zwracając kod żądania
- 22. Kroki wysyłania żądania https do usługi odpoczynku w węźle js
- 23. Gdzie mogę wyświetlić kod za biblioteką .net?
- 24. Tworzenie żądania HTTPS w systemie iOS 9 z samopodpisanym certyfikatem
- 25. Jak uzyskać tylko kod odpowiedzi z żądania HTTP w Ruby
- 26. Czy jest możliwe utworzenie żądania JSONP z HTTPS na HTTP?
- 27. Czy można wyświetlić kod źródłowy aplikacji iPhone?
- 28. Jak wyświetlić kod źródłowy funkcji R .Internal lub .Primitive?
- 29. Jak wyświetlić "wygenerowany kod HTML" w przeglądarce Firefox?
- 30. Jak wyświetlić kod SQL za pomocą Play Framework?
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