使用python mechanize和urllib2以及随机代理支持

时间:2013-08-22 16:38:51

标签: python python-2.7 proxy urllib2 mechanize

我有一些http代理,例如:

123.123.123.123:2312
121.111.3.89:8080
111.133.1.111:23810
114.113.1.113:23812
111.133.1.114:23810

他们都有相同的用户名和密码:testusertestpass

我尝试为以下内容添加随机代理支持:

import urllib2
import httplib
def check():
    try:
        urllib2.urlopen("", timeout = 60)
        return True
    except (IOError, httplib.HTTPException):
        return False

还尝试将其合并到以下内容中:

import mechanize
def gethtml():
        post_url = ""
        browser = mechanize.Browser()
        browser.set_handle_robots(False)
        browser.addheaders = [('User-agent', 'Firefox')]

        try:
            html = browser.open(post_url).read()
        except Exception:
            return

还有类似的:

import mechanize
def check2():
    post_url = ""
    browser = mechanize.Browser()
    browser.set_handle_robots(False)
    browser.addheaders = [('User-agent', 'Firefox')]
    parameters = {'page' : '1',
                  'sortorder' : 'asc'
                 }

    data = urllib.urlencode(parameters)

    try: 
        trans_array = browser.open(post_url,data).read().decode('UTF-8')
    except Exception:
        return

我最大的问题是我尝试过的所有事情,我得到以下两个错误:

httperror_seek_wrapper: HTTP Error 407: Proxy Authentication Required

HTTPError: HTTP Error 407: Proxy Authentication Required

是否有人能够帮助我创建一些有用的例子,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

mechanize的“随机代理支持”?那只是regular mechanize proxy stuff,但是你的代理列表中有一个随机挑选的代理吗?

如果是这样,你可以试试这个:

import mechanize
import random

proxies = [
    '123.123.123.123:2312',
    '121.111.3.89:8080'
    '111.133.1.111:23810',
    '114.113.1.113:23812',
    '111.133.1.114:23810',
    ]
rand_proxy = random.choice(proxies)

browser = mechanize.Browser()
browser.set_proxies({'http': rand_proxy})
browser.add_proxy_password('testuser', 'testpass')