我正在编写将使用浏览器打开套接字的HTTP代理服务器,来自浏览器的请求将转到我的HTTP代理服务器,我的服务器将打开与浏览器请求的服务器的套接字并向他发送请求。 它会是这样的:
浏览器 --request - > HTTP代理服务器 --request - > Web服务器
浏览器< - response-- HTTP代理服务器< - response-- Web服务器
现在我需要那些套接字显然我可以使用scapy来查看每个数据包的层并按照我的意愿操作它。 (出于安全原因,例如阻止网络钓鱼或类似的东西)
在这段代码中,我使用浏览器编写简单套接字,用于测试和了解HTTP请求的浏览器行为。
from scapy.all import *
import socket
socket_with_browser = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "Start"
socket_with_browser.bind(('127.0.0.1',8080))
socket_with_browser.listen(1)
conn , addr = socket_with_browser.accept()
stream_sock_browser = StreamSocket(conn)
r = stream_sock_browser.recv(4096)
r[TCP].show()
socket_with_browser.close()
我收到以下错误:
Traceback (most recent call last):
File "<string>", line 254, in run_nodebug
File "C:\Python26\ProxyServer\module1.py", line 22, in <module>
r[TCP].show()
File "C:\Python26\Lib\site-packages\scapy\packet.py", line 817, in __getitem__
raise IndexError("Layer [%s] not found" % lname)
IndexError: Layer [TCP] not found
有一种方法可以从套接字中获取数据包并使用scapy来使用它(获取数据包层或其他内容)?也许我严重宣布套接字?顺便说一句,我使用Windows 7和python 2.6