Urlretrieve и User-Agent? - питон - PullRequest
13 голосов
/ 02 марта 2010

Я использую urlretrieve из модуля urllib.

Я не могу найти, как добавить описание User-Agent к моим запросам.


Возможно ли это с помощью urlretrieve? или мне нужно использовать другой метод?

Ответы [ 4 ]

7 голосов
/ 22 августа 2015

Сначала установите версию:

urllib.URLopener.version = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0'

Тогда:

filename, headers = urllib.urlretrieve(url)
4 голосов
/ 14 августа 2011

Вы можете использовать классы URLopener или FancyURLopener. Аргумент 'version' указывает пользовательский агент объекта opener.

opener = FancyURLopener({}) 
opener.version = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36'
opener.retrieve('http://example.com', 'index.html')
2 голосов
/ 19 апреля 2017

Я знаю, что эта проблема существовала 7 лет. И я достиг этой проблемы, пытаясь понять, как изменить User-Agent при использовании функции urlretrieve.

Для всех, кто не смог решить эту проблему, вот как я это сделал:

    # proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
    proxy = ProxyHandler({})
    opener = build_opener(proxy)
    opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
    install_opener(opener)

    result = urlretrieve(url=file_url, filename=file_name)

Причина, по которой я добавил прокси-сервер, заключается в том, чтобы отслеживать трафик в Charles, и вот трафик, который я получил:

See the User-Agent

2 голосов
/ 02 марта 2010

Я не думаю, что это возможно с urlretrieve - по крайней мере, не легко. Я бы предложил создать объект urllib2.Request и передать ему необходимые заголовки. См

http://docs.python.org/library/urllib2.html#urllib2.urlopen

для примеров.

...