Skip to main content
 首页 » 编程设计

python之使用 python mechanize 和具有随机代理支持的 urllib2

2025年05月04日10davidwang456

例如,我有一些 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 

它们都有相同的用户名和密码:testuser 和 testpass

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

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 错误 407:需要代理身份验证

HTTPError:HTTP 错误 407:需要代理身份验证

谁能帮我创建一些工作示例,我将不胜感激。

请您参考如下方法:

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')