Richieste: intestazioni delle richieste HTTP
Nel capitolo precedente abbiamo visto come effettuare la richiesta e ottenere la risposta. Questo capitolo esplorerà un po 'di più la sezione dell'intestazione dell'URL. Quindi, esamineremo quanto segue:
- Comprensione delle intestazioni delle richieste
- Intestazioni personalizzate
- Intestazioni di risposta
Comprensione delle intestazioni delle richieste
Premi qualsiasi URL nel browser, ispezionalo e controlla nella scheda della rete dello strumento di sviluppo.
Otterrai intestazioni di risposta, intestazioni di richiesta, payload, ecc.
Ad esempio, considera il seguente URL:
https://jsonplaceholder.typicode.com/users
È possibile ottenere i dettagli dell'intestazione come segue:
Esempio
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
stream = True)
print(getdata.headers)
Produzione
E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 05:15:00 GMT', 'Content-Type': 'application/json;
charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive',
'Set-Cookie': '__cfduid=d2b84ccf43c40e18b95122b0b49f5cf091575090900; expires=Mon, 30-De
c-19 05:15:00 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By':
'Express', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT',
'Age': '2271', 'Expect-CT': 'max-age=604800,
report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53da574f
f99fc331-SIN'}
Per leggere qualsiasi intestazione http puoi farlo come segue:
getdata.headers["Content-Encoding"] // gzip
Intestazioni personalizzate
Puoi anche inviare intestazioni all'URL chiamato come mostrato di seguito.
Esempio
import requests
headers = {'x-user': 'test123'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
headers=headers)
Le intestazioni passate devono essere in formato stringa, bytestring o Unicode. Il comportamento della richiesta non cambierà in base alle intestazioni personalizzate passate.
Intestazioni di risposta
Le intestazioni delle risposte appaiono come di seguito quando controlli l'URL nello strumento di sviluppo del browser, scheda di rete -
Per ottenere i dettagli delle intestazioni dal modulo delle richieste utilizzare. Response.headers sono come mostrato di seguito -
Esempio
import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.headers)
Produzione
E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 06:08:10 GMT', 'Content-Type': 'application/json;
charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive',
'Set-Cookie': '__cfduid=de1158f1a5116f3754c2c353055694e0d1575094090; expires=Mon,
30-Dec-19 06:08:10 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By':
'Express', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT',
'Age': '5461', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudf
lare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53daa52f
3b7ec395-SIN'}
Puoi ottenere qualsiasi intestazione specifica che desideri come segue:
print(getdata.headers["Expect-CT"])
Produzione
max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct
You can also get the header details by using the get() method.
print(getdata.headers.get("Expect-CT"))
Produzione
max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct