-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path20.py
49 lines (41 loc) · 1.52 KB
/
20.py
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
import urllib.request
import io
import re
url = "http://www.pythonchallenge.com/pc/hex/unreal.jpg"
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "http://www.pythonchallenge.com/pc/hex/"
password_mgr.add_password(None, top_level_url, "butter", "fly")
handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
opener = urllib.request.build_opener(handler)
opener.open(url)
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
print(response.headers)
request=urllib.request.Request(url)
pattern=re.compile("bytes (\d+)-(\d+)/(\d+)")
content_range=response.headers["Content-Range"]
(begin, end, length)=pattern.search(content_range).groups()
while True:
request.headers["Range"]="bytes=%i-" % (int(end)+1)
try:
response = urllib.request.urlopen(request)
except:
break
print(response.read().decode())
print(response.headers)
content_range=response.headers["Content-Range"]
(begin, end, length)=pattern.search(content_range).groups()
request.headers["Range"]="bytes=%i-" % (int(length)+1)
response = urllib.request.urlopen(request)
print(response.read().decode())
print(response.headers)
content_range=response.headers["Content-Range"]
(begin, end, length)=pattern.search(content_range).groups()
request.headers["Range"]="bytes=%i-" % (int(begin)-1)
response = urllib.request.urlopen(request)
print(response.read().decode())
print(response.headers)
request.headers["Range"]="bytes=1152983631-"
response = urllib.request.urlopen(request)
f=open("20_rst.zip","wb")
f.write(response.read())