这几天我正在写一个转发代理。代理连接的HTTP/s流
我遇到了三个HTTP/s代码问题。 第一个是,无论何时我试图处理重定向[302](例如www.google.com),我都没有收到任何数据。 我处理重定向与此代码:
try:
response = requests.get("http://"+webserver, timeout=2)
if response.history:
print "Redirected to " + response.url
c = httplib.HTTPSConnection(response.url, port,config['CONNECTION_TIMEOUT'])
else:
print "Getting information from " + webserver
c = httplib.HTTPSConnection(webserver, port,config['CONNECTION_TIMEOUT'])
except requests.exceptions.ConnectionError:
print "Getting information from " + webserver
c = httplib.HTTPSConnection(webserver)
如果我试图通过直接连接到重定向URL绕过第一个错误,出现的第二个问题。我从网站收到的数据(任何受http/s保护的网站,www.google.co.il上的例子)都包含这些问号所不需要的字符: 而不是希伯来文或阿拉伯文字(英文工作得很好)。
我处理的数据与此代码:
c = httplib.HTTPSConnection(webserver)
while 1:
c.request("GET", "/")
response = c.getresponse()
# send request to web server
# Indiscriminately forward bytes
data = response.read() # NEED TO DECODE
print "DATA : ", data
if len(data) > 0:
conn.send(data)
print "DATA SENT!"
else:
break
c.close()
conn.close()
这是我收到的数据(我不能在这里包括的一切,所以这是有数据的HTML预览照片):The data
而我遇到的最后一个问题是数据没有发送到浏览器。代理接收数据(正如您在第二个问题中看到的那样),但由于某种原因,它不会将数据转发给浏览器。 (代码与第二个问题相同)。
浏览器显示此错误:ERR_TUNNEL_CONNECTION_FAILED
任何帮助将是非常赞赏!
由于提前,Yahli
*编辑:还是没能找到一个answer.I需要你的帮助:)
如果不希望谷歌重定向到您的国家/地区,请使用https://www.google.com/ncr它将您转到https://www.google.com – Mani
不幸的是,这对我没有多大帮助。我需要进一步帮助解决其他问题。 –