2016-01-21 57 views
0

我使用mitmproxy與Python作爲http代理修改request.url不改變request.host

我運行下面的命令代理:

mitmdump -s proxy.py -U http://upstreamproxy 

的proxy.py就像是以下幾點:

#!/usr/bin/mitmdump 
from __future__ import print_function 
import pprint 
import datetime 
import os 
import re 


pp = pprint.PrettyPrinter(indent=4) 

def request(context, flow): 
    print("DEBUG") 
    oldhost = flow.request.host 
    flow.request.url = re.sub(r"www.verycd.com",r"115.182.66.26",flow.request.url) 
    # flow.request.host = oldhost #<---This will modify the url also 
    print("DEBUG") 

我期望是到www.verycd.com改變IP網址中,但保持東道國領域仍然使用www.verycd.com,像以下:

GET http://115.182.66.26/ HTTP/1.1 
TE: deflate,gzip;q=0.3 
Connection: TE, close 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip, deflate 
Accept-Language: zh,en-US;q=0.5 
Host: www.verycd.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0 

但mitmproxy隨時更改,同時 我得到了下面的網址和主機的服務器不接受

GET http://115.182.66.26/ HTTP/1.1 
TE: deflate,gzip;q=0.3 
Connection: TE, close 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip, deflate 
Accept-Language: zh,en-US;q=0.5 
Host: 115.182.66.26 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0 

回答