在python 3中通过http代理发送一个syn数据包

时间:2016-08-30 14:30:52

标签: python sockets python-3.x scapy http-proxy

我可以通过socks发送一个tcp syn数据包,但HTTP代理呢?有可能吗?

这是带袜子的代码(它有效):

p = bytes(IP(dst="DESTINATIONIP")/TCP(flags="S", sport=RandShort(), dport=80))
        while True:
            try:
                socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, socksip, sockport, True)
                s = socks.socksocket()
                s.connect((DESTINATIONIP,DESTINATIONPORT))
                s.send(p)
                print ("Request Sent!")
            except:
                print ("An error occurred.")

1 个答案:

答案 0 :(得分:0)

我假设你说"发送一个SYN数据包"你的意思是"建立连接",因为你不能通过SOCKS发送任何裸IP层数据包,只能建立连接并发送TCP / UDP有效载荷。

对于http代理,它类似,你只需使用http隧道命令" CONNECT",例如你发送

CONNECT somewhere.example.com:443 HTTP/1.1
Host: somewhere.example.com
etc

并等待

HTTP/1.1 200 Connection established
etc

响应。您需要考虑http响应消息中的所有数据(直到收到HTTP标头的末尾为止),这样您就不会将其与有效负载混合起来。