1

私はこのサイトでこのスクリプトを見つけました:

from twisted.web import proxy, http
from twisted.internet import reactor
import sys

class MyProxy(proxy.Proxy):

    def dataReceived(self, data):
      print data 
      return proxy.Proxy.dataReceived(self, data)

class ProxyFactory(http.HTTPFactory):
  protocol=MyProxy

factory = ProxyFactory()
reactor.listenTCP(8080, factory)
reactor.run()

ご覧のとおり、dataReceivedメソッドをオーバーライドしてデータを出力します。これを実行すると、要求されたすべてのヘッダーをstdoutに出力します。

GET http://careers.stackoverflow.com/ad/i/nNxudq0-kvjnJ84-n6osrC0-12-vYY HTTP/1.1
Host: careers.stackoverflow.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: http://stackoverflow.com/questions/7052849/simple-http-proxy
Cookie: __utma=140029553.285085787.1331510700.1337692646.1337711538.33; __utmz=140029553.1337711538.33.19.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __qca=P0-608923218-1331510699748; usr=t=5TLQ0kWmkGJo&s=RgkodeSUGq8k; __utmc=140029553; __utmb=140029553.3.10.1337711538
  1. 受信したデータ(ヘッダー)に辞書としてアクセスできるような方法(または他の実装)でこれをオーバーライドすることは可能ですか(例:data ['Host'] ='xxxx' ...)
  2. また、このページからすべてのURLを取得したいと思います。
4

1 に答える 1

1

生データを取得しているので、各行がヘッダーであるかどうかをテストします(/ ^ [-a-zA-Z] +:/良いスタートのように聞こえます。また、ヘッダーの終わりを示す二重のcrlfにも注意してください) 、それを自分で辞書に保存します。

于 2012-05-22T19:10:57.697 に答える