このTwisted HTTP Clientの例でリモートピアIPにアクセスするにはどうすればよいですか?インターネット上で検索した後Twisted HTTP ClientアクセスピアIP(サーバ)
from sys import argv
from pprint import pformat
from twisted.internet.task import react
from twisted.web.client import Agent, readBody
from twisted.web.http_headers import Headers
def cbRequest(response):
#print 'Response version:', response.version
#print 'Response code:', response.code
#print 'Response phrase:', response.phrase
#print 'Response headers:'
#print pformat(list(response.headers.getAllRawHeaders()))
poweredby = response.headers.getRawHeaders("X-Powered-By")
server = response.headers.getRawHeaders("Server")
print poweredby
print server
d = readBody(response)
d.addCallback(cbBody)
return d
def cbBody(body):
print 'Response body:'
#print body
def main(reactor, url=b"http://www.example.com/"):
agent = Agent(reactor)
d = agent.request(
'GET', url,
Headers({'User-Agent': ['Twisted Web Client Example']}),
None)
d.addCallback(cbRequest)
return d
react(main, argv[1:])
及びSO、私はそれから読み取ることができることを見出した:(ツイストドキュメントから)
は、この例での作業
self.xmlstream.transport.getHandle().getpeername()
又は
self.transport.getPeer()
しかし、 "self"というクラスがどのクラスを参照しているのか、そしてそのコードをどこに配置するのかはわかりません。
助けが必要ですか?ヒント?アイデア?
おかげで、
リモートサーバーは確かに "www.example.com"です(これはネームリゾルバでIPアドレスに解決できます)。あなたはもう少し何をしようとしているのか説明できますか? –
接続が既に行われているので、より効率的になり、ホスト名の解決をスキップしてIPピア名を取得できます。大量のウェブサイトをクロールしたい二度とやりたくない。私はこのようなurllib2(peer = response.fp._sock.fp._sock.getpeername())でそれをしましたが、ツイストされたモジュールでそれを行う方法を知らないです –
あなたは何のためにアドレスを使用する予定ですか?あなたがチケットを申請した場合に含めるべき良い情報)? –