如何使用Robobrowser代理

时间:2014-06-12 05:46:21

标签: python django

我在django中使用http://robobrowser.readthedocs.org/en/latest/readme.html(一个基于美丽汤和请求库的新python库)。我的django应用程序包含:

def index(request):    

    p=str(request.POST.get('p', False)) # p='https://www.yahoo.com/'

    pr="http://10.10.1.10:3128/"
    setProxy(pr)

    browser = RoboBrowser(history=True)
    postedmessage = browser.open(p)
    return HttpResponse(postedmessage)

我想在我的代码中添加代理,但无法在文档中找到有关如何执行此操作的参考。有可能这样做吗?

编辑:

根据您的建议我已将代码更改为

    pr="http://10.10.1.10:3128/"
    setProxy(pr)
    browser = RoboBrowser(history=True)

使用:

def setProxy(pr):
    import os
    os.environ['HTTP_PROXY'] = pr
    return

我现在要:

Django Version: 1.6.4
Exception Type: LocationParseError
Exception Value:    
Failed to parse: Failed to parse: 10.10.1.10:3128

关于下一步该怎么做的任何想法?我找不到对此错误的引用

2 个答案:

答案 0 :(得分:9)

在RoboBrowser中进行了一些最近的A​​PI清理之后,现在有两种相对简单的方法来控制代理。首先,您可以在请求会话中配置代理,然后将该会话传递给浏览器。这会将您的代理应用于通过浏览器发出的所有请求。

from requests import Session
from robobrowser import RoboBrowser

session = Session()
session.proxies = {'http': 'http://my.proxy.com/'}
browser = RoboBrowser(session=session)

其次,您可以基于每个请求设置代理。 open的{​​{1}},follow_linksubmit_form方法现在接受RoboBrowser的关键字参数。例如:

requests.Session.send

答案 1 :(得分:2)

由于RoboBrowser使用请求库,您可以尝试通过设置环境变量HTTP_PROXYHTTPS_PROXY来设置request docs中提到的代理。