我正在使用twittytwister模块来实现Twitter客户端,但看起来它已经不再开发了。我需要连接到HTTP代理才能访问互联网,但模块没有这样的选项,所以我正在考虑修改它。
def __downloadPage(factory, *args, **kwargs):
downloader = factory(*args, **kwargs)
if downloader.scheme == 'https':
from twisted.internet import ssl
contextFactory = ssl.ClientContextFactory()
reactor.connectSSL(downloader.host, downloader.port,
downloader, contextFactory)
else:
reactor.connectTCP(downloader.host, downloader.port,
downloader)
return downloader
def getPage(url, *args, **kwargs):
return __downloadPage(client.HTTPClientFactory, url, *args, **kwargs)
我可以在这做什么让它与我的代理连接?我是否将client.HTTPClientFactory替换为其他内容?
答案 0 :(得分:0)
较新的(在Twisted 9.0.0中添加)HTTP客户端API twisted.web.client.Agent
,包括对连接到HTTP代理的支持。例如,您可以写:
from twisted.web.client import Agent, ProxyAgent
from twisted.internet.endpoints import clientFromString
from twisted.internet import reactor
from os import environ
try:
proxy = environ["HTTP_PROXY"]
except KeyError:
agent = Agent(reactor)
else:
agent = ProxyAgent(clientFromString(reactor, proxy))
有关此示例使用的HTTP_PROXY
环境变量的预期格式的详细信息,请参阅endpoints documentation。
不幸的是,看起来twittytwister使用较旧的HTTP客户端API,因此您需要将其移植到使用Agent
才能从ProxyAgent
中受益。幸运的是,getPage
样式API相当有限,因此用Agent
样式代码替换它应该不是很难。