1

有谁能够解释如何使Ghost.py与代理一起工作?我已经检查了代码,但它不存在。

4

4 回答 4

3

我在 ghost.py 文件中找到了它。他们在这方面做得很好。这是第 835 行的一个方法,如 set_proxy()。我还没有尝试过如何使用它:

def set_proxy(self, type_, host='localhost', port=8888, user='',
        password=''):
    """Set up proxy for FURTHER connections.

    :param type_: proxy type to use: \
        none/default/socks5/https/http.
    :param host: proxy server ip or host name.
    :param port: proxy port.
    """
    _types = {
        'default': QNetworkProxy.DefaultProxy,
        'none': QNetworkProxy.NoProxy,
        'socks5': QNetworkProxy.Socks5Proxy,
        'https': QNetworkProxy.HttpProxy,
        'http': QNetworkProxy.HttpCachingProxy
    }

    if type_ is None:
        type_ = 'none'
    type_ = type_.lower()
    if type_ in ['none', 'default']:
        self.manager.setProxy(QNetworkProxy(_types[type_]))
        return
    elif type_ in _types:
        proxy = QNetworkProxy(_types[type_], hostName=host, port=port,
            user=user, password=password)
        self.manager.setProxy(proxy)
    else:
        raise ValueError('Unsupported proxy type:' + type_ \
        + '\nsupported types are: none/socks5/http/https/default')

我现在不明白的是“QNetworkProxy.DefaultProxy”是什么意思。据说它是默认代理。那么,默认代理是什么?

于 2014-01-22T09:25:39.490 回答
2

如果在 Ghost.py 中是基于 Qt api 建立 tcp 连接的方式,那么你可以使用 Qt/PySide api,参见 QNetworkProxy::setApplicationProxy()。否则,如果 Ghost.py 不使用 Qt Api,但例如 curl libe,那么您尝试设置环境变量“http_proxy”

于 2014-01-21T17:19:22.340 回答
2

文档说 QNetworkProxy.DefaultProxy: Proxy 是根据使用 setApplicationProxy() 设置的应用程序代理确定的所以如果代理是由 QNetworkProxy::setApplicationProxy() 设置的,那么调用 set_proxy('default') 将使用它(它将将代理传递给 self.manager,我猜是 QNetworkAccessManager 对象)。

于 2014-01-23T10:02:26.147 回答
2

您可以使用以下代码。这个对我有用,

from ghost import Ghost, Session
ghost = Ghost()
with ghost.start():
    session = Session(ghost)
    session.wait_timeout = 999
    session.set_proxy('http', str(ip), int(port), str(username), str(password))
    page, resource = session.open(url)
    print session.content # Prints html content
    print page.headers, page.url, page.http_status

ghost 对象只有一种方法,即 start()。其余的被定义为 Session 类的方法。

于 2015-08-24T10:28:18.163 回答