1 #! /usr/bin/env python3
3 from http.client import HTTPConnection, HTTPSConnection
4 from urllib.parse import urlsplit, parse_qsl, urlencode, quote, quote_plus
10 split_results = urlsplit(url)
11 protocol, netloc, path, query, tag = split_results
12 user = split_results.username
13 password = split_results.password
14 host = split_results.hostname
15 port = split_results.port
16 qlist = parse_qsl(query)
18 url = protocol + "://"
22 url += ':' + quote(password)
25 host = host.encode('idna').decode('ascii')
30 if protocol == "file":
35 url += '?' + urlencode(qlist)
37 url += '#' + quote_plus(tag)
39 if protocol == "https":
40 server = HTTPSConnection(host, port)
42 server = HTTPConnection(host, port)
43 server.set_debuglevel(1)
44 server.putrequest("HEAD", path)
46 # I remember seeing some sites that return broken HTML or even HTTP response
47 # without "compatible" user agent; I don't know if such sites are still around,
48 # but this header doesn't cause any harm so I'd better continue to use it.
49 # UPDATE: I saw a number of sites that forbid "Mozilla compatible"
50 urllib_version = urllib.request.__version__
51 client_version = "Python-urllib/%s" % urllib_version
52 server.putheader('User-agent', client_version)
54 server.putheader('Accept-Charset', "koi8-r;q=1.0")