Update requests exercise
This commit is contained in:
parent
17d758d75b
commit
72ccded05d
34
python-ofensivo/08_librerias/03_requests_01_get.py
Normal file
34
python-ofensivo/08_librerias/03_requests_01_get.py
Normal file
@ -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}")
|
16
python-ofensivo/08_librerias/03_requests_02_post.py
Normal file
16
python-ofensivo/08_librerias/03_requests_02_post.py
Normal file
@ -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}")
|
26
python-ofensivo/08_librerias/03_requests_03_except.py
Normal file
26
python-ofensivo/08_librerias/03_requests_03_except.py
Normal file
@ -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")
|
||||||
|
|
15
python-ofensivo/08_librerias/03_requests_04_json.py
Normal file
15
python-ofensivo/08_librerias/03_requests_04_json.py
Normal file
@ -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")
|
15
python-ofensivo/08_librerias/03_requests_05_auth.py
Normal file
15
python-ofensivo/08_librerias/03_requests_05_auth.py
Normal file
@ -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)
|
||||||
|
|
11
python-ofensivo/08_librerias/03_requests_06_cookie.py
Normal file
11
python-ofensivo/08_librerias/03_requests_06_cookie.py
Normal file
@ -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)
|
||||||
|
|
11
python-ofensivo/08_librerias/03_requests_07_file.py
Normal file
11
python-ofensivo/08_librerias/03_requests_07_file.py
Normal file
@ -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)
|
||||||
|
|
15
python-ofensivo/08_librerias/03_requests_08_session.py
Normal file
15
python-ofensivo/08_librerias/03_requests_08_session.py
Normal file
@ -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)
|
||||||
|
|
18
python-ofensivo/08_librerias/03_requests_09_change_header.py
Normal file
18
python-ofensivo/08_librerias/03_requests_09_change_header.py
Normal file
@ -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)
|
16
python-ofensivo/08_librerias/03_requests_10_redirect.py
Normal file
16
python-ofensivo/08_librerias/03_requests_10_redirect.py
Normal file
@ -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}")
|
||||||
|
|
17
python-ofensivo/08_librerias/03_requests_11_sesion_with.py
Normal file
17
python-ofensivo/08_librerias/03_requests_11_sesion_with.py
Normal file
@ -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)
|
||||||
|
|
1
python-ofensivo/08_librerias/example.txt
Normal file
1
python-ofensivo/08_librerias/example.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Hola, soy el contenido del archivo
|
Loading…
Reference in New Issue
Block a user