-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathget_redirect.py
More file actions
70 lines (55 loc) · 1.98 KB
/
get_redirect.py
File metadata and controls
70 lines (55 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""Make various GET requests to httpbin.org to test redirection support."""
import sys
import mrequests
def main():
print("Running on platform:", sys.platform)
host = "http://httpbin.org/"
base_url = host + "redirect/"
url = base_url + "1"
print("Requesting %s with default max_redirects ..." % url)
r = mrequests.get(url)
print("Status code:", r.status_code)
r.close()
url = base_url + "2"
print("Requesting %s with max_redirects=2 ..." % url)
r = mrequests.get(url, max_redirects=2)
print("Status code:", r.status_code)
r.close()
# max_redirects defaults to 1, so this should raise a ValueError
print("Requesting %s with default max_redirects (should fail)..." % url)
try:
r = mrequests.get(url)
except ValueError as exc:
print("FAIL", exc)
else:
r.close()
base_url = host + "absolute-redirect/"
url = base_url + "1"
print("Requesting %s with default max_redirects ..." % url)
r = mrequests.get(url)
print("Status code:", r.status_code)
r.close()
url = base_url + "2"
print("Requesting %s with max_redirects=2 ..." % url)
r = mrequests.get(url, max_redirects=2)
print("Status code:", r.status_code)
r.close()
# max_redirects defaults to 1, so this should raise a ValueError
print("Requesting %s with default max_redirects (should fail)..." % url)
try:
r = mrequests.get(url)
except ValueError as exc:
print("FAIL", exc)
else:
print("Status code:", r.status_code)
r.close()
url = base_url.replace("http:", "https:") + "1"
print("Requesting HTTPS URL %s redirecting to HTTP location (should NOT follow redirect)..." % url)
r = mrequests.get(url, save_headers=True)
print("Status code:", r.status_code)
for hline in r.headers:
if hline.startswith(b"Location:"):
print("Location:", hline.decode("ascii").split(":", 1)[1].strip())
r.close()
if __name__ == '__main__':
main()