I am pretty new to python's urllib. What I need to do is set a custom header for the request being sent to the server. Specifically, I need to set the Content-type and Authorizations headers. I have looked into the python documentation, but I haven't been able to find it.
Asked
Active
Viewed 1.6e+01k times
4 Answers
110
For both Python 3 and Python 2, this works:
try:
from urllib.request import Request, urlopen # Python 3
except ImportError:
from urllib2 import Request, urlopen # Python 2
req = Request('http://api.company.com/items/details?country=US&language=en')
req.add_header('apikey', 'xxx')
content = urlopen(req).read()
print(content)
Kir Chou
- 2,725
- 1
- 33
- 45
Cees Timmerman
- 15,267
- 10
- 85
- 116
-
Can we do the same thing with requests q.add_header('apikey', 'xxx') – user3378649 Jun 14 '15 at 17:41
-
What do you mean, @user3378649? – Cees Timmerman Jun 14 '15 at 22:04
-
2@user3378649 may be you means use `requests` python package [custom headers](http://docs.python-requests.org/en/master/user/quickstart/#custom-headers) – WeizhongTu Apr 15 '16 at 01:27
-
1THIS answer - a thousand times YES (thanks!). I have been struggling for hours trying to find a common interface for python 2 and 3 (between urllib, urllib2 and urllib3). – Beorn Harris Sep 20 '19 at 08:18
102
adding HTTP headers using urllib2:
from the docs:
import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
resp = urllib2.urlopen(req)
content = resp.read()
Lars Blumberg
- 16,724
- 10
- 81
- 114
Corey Goldberg
- 56,214
- 26
- 121
- 139
20
Use urllib2 and create a Request object which you then hand to urlopen. http://docs.python.org/library/urllib2.html
I dont really use the "old" urllib anymore.
req = urllib2.Request("http://google.com", None, {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'})
response = urllib2.urlopen(req).read()
untested....
sleeplessnerd
- 20,433
- 1
- 24
- 29
2
For multiple headers do as follow:
import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('param1', '212212')
req.add_header('param2', '12345678')
req.add_header('other_param1', 'sample')
req.add_header('other_param2', 'sample1111')
req.add_header('and_any_other_parame', 'testttt')
resp = urllib2.urlopen(req)
content = resp.read()