From 72ccded05d4cee4848c3dc2603325f713f29d535 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Sun, 14 Jan 2024 00:15:52 +0100 Subject: [PATCH] Update requests exercise --- .../08_librerias/03_requests_01_get.py | 34 +++++++++++++++++++ .../08_librerias/03_requests_02_post.py | 16 +++++++++ .../08_librerias/03_requests_03_except.py | 26 ++++++++++++++ .../08_librerias/03_requests_04_json.py | 15 ++++++++ .../08_librerias/03_requests_05_auth.py | 15 ++++++++ .../08_librerias/03_requests_06_cookie.py | 11 ++++++ .../08_librerias/03_requests_07_file.py | 11 ++++++ .../08_librerias/03_requests_08_session.py | 15 ++++++++ .../03_requests_09_change_header.py | 18 ++++++++++ .../08_librerias/03_requests_10_redirect.py | 16 +++++++++ .../03_requests_11_sesion_with.py | 17 ++++++++++ python-ofensivo/08_librerias/example.txt | 1 + 12 files changed, 195 insertions(+) create mode 100644 python-ofensivo/08_librerias/03_requests_01_get.py create mode 100644 python-ofensivo/08_librerias/03_requests_02_post.py create mode 100644 python-ofensivo/08_librerias/03_requests_03_except.py create mode 100644 python-ofensivo/08_librerias/03_requests_04_json.py create mode 100644 python-ofensivo/08_librerias/03_requests_05_auth.py create mode 100644 python-ofensivo/08_librerias/03_requests_06_cookie.py create mode 100644 python-ofensivo/08_librerias/03_requests_07_file.py create mode 100644 python-ofensivo/08_librerias/03_requests_08_session.py create mode 100644 python-ofensivo/08_librerias/03_requests_09_change_header.py create mode 100644 python-ofensivo/08_librerias/03_requests_10_redirect.py create mode 100644 python-ofensivo/08_librerias/03_requests_11_sesion_with.py create mode 100644 python-ofensivo/08_librerias/example.txt diff --git a/python-ofensivo/08_librerias/03_requests_01_get.py b/python-ofensivo/08_librerias/03_requests_01_get.py new file mode 100644 index 0000000..2341000 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_01_get.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +""" +Documentación Librería requests: https://requests.readthedocs.io/en/latest/ +""" + +import requests + +response = requests.get('https://google.es') + +print(f"\n[+] Status code: {response.status_code}") +print(f"\n[+] Headers: {response.headers['content-type']}") +print(f"\n[+] Encoding: {response.encoding}") +print(f"\n[+] Guardando código fuente en index.html") + +with open('index.html', 'w') as f: + f.write(response.text) + +# https://httpbin.org/get + +values = {'name': 'John Doe', 'age': 22, 'method': 'get'} + +response = requests.get('https://httpbin.org/get', params=values) + +print(f"\n[+] URL final: {response.url}") +print(f"\n[+] Código fuente: {response.text}") + +# https://httpbin.org/post + +payload = {'name': 'John Doe', 'age': 22, 'method': 'post'} + +response = requests.post('https://httpbin.org/post', params=payload) + +print(f"\n[+] URL final: {response.url}") +print(f"\n[+] Código fuente: {response.text}") diff --git a/python-ofensivo/08_librerias/03_requests_02_post.py b/python-ofensivo/08_librerias/03_requests_02_post.py new file mode 100644 index 0000000..a44f971 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_02_post.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +""" +Documentación Librería requests: https://requests.readthedocs.io/en/latest/ +""" + +import requests + + +# https://httpbin.org/post + +payload = {'name': 'John Doe', 'age': 22, 'method': 'post'} +headers = {'User-Agent': 'my-invent-app/1.1.0'} +response = requests.post('https://httpbin.org/post', params=payload, headers=headers) + +print(f"\n[+] URL final: {response.url}") +print(f"\n[+] Código fuente: {response.text}") diff --git a/python-ofensivo/08_librerias/03_requests_03_except.py b/python-ofensivo/08_librerias/03_requests_03_except.py new file mode 100644 index 0000000..b26d352 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_03_except.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +import requests + +try: + response = requests.get('https://google.ese', timeout=1) + + response.raise_for_status() + +except requests.Timeout: + + print(f"\n[!] La web ha excedido el límite de tiempo de espera") + +except requests.HTTPError as http_err: + + print(f"[!] Error HTTP: {http_err}") + + +except requests.RequestException as err: + + print(f"\n[!] Error: {err}") + +else: + + print(f"\n[+] No ha habido ningún error en la solicitud") + diff --git a/python-ofensivo/08_librerias/03_requests_04_json.py b/python-ofensivo/08_librerias/03_requests_04_json.py new file mode 100644 index 0000000..78a1514 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_04_json.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import requests + +response = requests.get('https://httpbin.org/get') + +data = response.json() + +if 'headers' in data and 'User-Agent' in data['headers']: + + user_agent = data['headers']['User-Agent'] + +else: + + print(f"\n[!] No existe el campo User-Agent en la respuesta\n") diff --git a/python-ofensivo/08_librerias/03_requests_05_auth.py b/python-ofensivo/08_librerias/03_requests_05_auth.py new file mode 100644 index 0000000..1953961 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_05_auth.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import requests + +# from requests.auth import HTTPBasicAuth +# Con esta librería se podría detallar el método llamándolo así: +# auth=HTTPBasicAuth('foo', 'bar') + +# Paǵina para practicar autenticación: https://httpbin.org/basic-auth/foo/bar + +response = requests.get('https://httpbin.org/basic-auth/foo/bar', auth=('foo', 'bar')) + +print(f"\n[+] Código de error: {response.status_code}\n") +print(response.text) + diff --git a/python-ofensivo/08_librerias/03_requests_06_cookie.py b/python-ofensivo/08_librerias/03_requests_06_cookie.py new file mode 100644 index 0000000..94781ae --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_06_cookie.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import requests + +url = 'https://httpbin.org/cookies' +cookies = dict(cookies_are="working") + +response = requests.get(url, cookies=cookies) + +print(response.text) + diff --git a/python-ofensivo/08_librerias/03_requests_07_file.py b/python-ofensivo/08_librerias/03_requests_07_file.py new file mode 100644 index 0000000..b650c2a --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_07_file.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import requests + +url = 'https://httpbin.org/post' +my_file = {'archivo': open('example.txt', 'r')} + +response = requests.post(url, files=my_file) + +print(response.text) + diff --git a/python-ofensivo/08_librerias/03_requests_08_session.py b/python-ofensivo/08_librerias/03_requests_08_session.py new file mode 100644 index 0000000..bdae172 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_08_session.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import requests + +url = 'https://httpbin.org/cookies' +set_cookies_url = 'https://httpbin.org/cookies/set/my_cookie/123123' + +# Crear una sesión para arrastrar la cookie +s = requests.Session() + +response = s.get(set_cookies_url) +response = s.get(url) + +print(response.text) + diff --git a/python-ofensivo/08_librerias/03_requests_09_change_header.py b/python-ofensivo/08_librerias/03_requests_09_change_header.py new file mode 100644 index 0000000..35fb759 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_09_change_header.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +from requests import Request, Session + +url = 'https://httpbin.org/get' +s = Session() + +headers = {'Custom-Header':'my_custom_header'} + +req = Request('GET', url, headers=headers) + +prepped = req.prepare() + +prepped.headers['Custom-Header'] = 'my_header_changed' +prepped.headers['Another-Header'] = 'other_header' +response = s.send(prepped) + +print(response.text) diff --git a/python-ofensivo/08_librerias/03_requests_10_redirect.py b/python-ofensivo/08_librerias/03_requests_10_redirect.py new file mode 100644 index 0000000..89c7008 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_10_redirect.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +import requests + +url = 'http://github.com' + +# r = requests.get(url, allow_redirects=False # Para que no haga reenvíos) +r = requests.get(url) + +# print(r.url) + +for request in r.history: + print(f"\n[+] Hemos pasado por el dominio {request.url} con un código de estado {request.status_code}") + +print(f"\n[+] URL final: {r.url} con el código de estado: {r.status_code}") + diff --git a/python-ofensivo/08_librerias/03_requests_11_sesion_with.py b/python-ofensivo/08_librerias/03_requests_11_sesion_with.py new file mode 100644 index 0000000..4b7d663 --- /dev/null +++ b/python-ofensivo/08_librerias/03_requests_11_sesion_with.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import requests + +# htpps://httpbin.org/basic-auth/foo/bar + +# Con with arrastramos una sesión +with requests.Session() as session: + + session.auth = ('foo', 'bar') + response1 = session.get('https://httpbin.org/basic-auth/foo/bar') + print(response1.text) + + # En la segunda sesión estaremos autenticados + response2 = session.get('https://httpbin.org/basic-auth/foo/bar') + print(response2.text) + diff --git a/python-ofensivo/08_librerias/example.txt b/python-ofensivo/08_librerias/example.txt new file mode 100644 index 0000000..511c4b1 --- /dev/null +++ b/python-ofensivo/08_librerias/example.txt @@ -0,0 +1 @@ +Hola, soy el contenido del archivo