Как войти на веб-страницу с куки и user-agent? - PullRequest
1 голос
/ 01 июля 2011

Я пытаюсь войти на определенный сервер и загружать картинки оттуда программно.Я знаю логин и смог узнать какие переменные это имя пользователя и пароль.Я также смог загрузить изображения, для которых не требовался пароль с этим кодом.

Веб-страница постоянно сообщает мне, что мой пользовательский агент не поддерживается, поэтому я предполагаю, что неправильно настраиваю пользовательский агент.

Требуетсякуки и пользовательский агент.Я знаю, как войти на страницы с файлами cookie, но я не знаю, как добавить параметр User-agent к HTTP-запросу в Python (и проверить, правильно ли он был добавлен).

Я создаю стандартное средство открытия URL-адресов.Я использую этот код:

def login(_url, _name, _password):
    if 1:
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
        opener.addheaders = {("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0")}
        urllib2.install_opener(opener)
        #
        # login parameters
        # PRE:
        #     1] addons.mozilla.org/en-US/firefox/addon/live-http-headers/
        #    2] _url is first line, sometimes it ends with do-submit, php...
        #    3] _name and _password is content
        # SOURCE:
        # http://www.oooff.com/php-scripts/basic-curl-form-filling-tutorial/php-newbie-form-fill-tutorial.php
        #
    else:
        #
        # i tried even mechanize
        # but I do not know how to set it either
        #
        cookies = mechanize.CookieJar()
        opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))

    params = urllib.urlencode(dict(login=_name, password=_password))
    f = opener.open(_url, params)
    data = f.read()
    f.close()
    return opener

Я пытался переместить adheaders в разные места, но это не помогло.Может быть, это можно сделать с помощью механизации, но я не уверен, как.

Спасибо за помощь.:)

1 Ответ

1 голос
/ 01 июля 2011

Страница документации Python имеет этот формат для построения открывателей с использованием квадратных скобок. Вы передаете его как {(...)}

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')
...