GVKun编程网logo

Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求(套接字 python)

8

在本文中,我们将给您介绍关于Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求的详细内容,并且为您解答套接字python的相关问题,此外,我们还将为您提供关于HTTP代理,什么是

在本文中,我们将给您介绍关于Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求的详细内容,并且为您解答套接字 python的相关问题,此外,我们还将为您提供关于HTTP代理,什么是HTTP代理?HTTP代理如何设置?HTTP代理的用途?、java怎么写http代理,多级http代理级联、Python-Scapy或类似工具-如何在数据包级别创建HTTP GET请求、python套接字的知识。

本文目录一览:

Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求(套接字 python)

Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求(套接字 python)

首先,我了解还有其他模块,例如“请求”将更适合且更易于使用,但是我想使用套接字模块更好地理解HTTP。

我有一个执行以下操作的简单脚本:

客户端—> HTTP代理—>外部资源(GET Google.com)

我可以连接到HTTP代理,但是当我将google.com的GET请求标头发送到代理时,它根本无法为我提供任何响应。

#!/usr/bin/python
import socket
import sys



headers = """GET / HTTP/1.1\r\n
Host: google.com\r\n\r\n"""



socket = socket

host = "165.139.179.225" #proxy server IP
port = 8080              #proxy server port

try:
    s = socket.socket()
    s.connect((host,port))
    s.send(("CONNECT {0}:{1} HTTP/1.1\r\n" + "Host: {2}:    {3}\r\n\r\n").format(socket.gethostbyname(socket.gethostname()),1000,port,host))
    print s.recv(1096)
    s.send(headers)
    response = s.recv(1096)
   print response
   s.close()
except socket.error,m:
   print str(m)
   s.close()
   sys.exit(1)

HTTP代理,什么是HTTP代理?HTTP代理如何设置?HTTP代理的用途?

HTTP代理,什么是HTTP代理?HTTP代理如何设置?HTTP代理的用途?

HTTP代理可以用于许多不同的目的。其中一些用途包括:

访问被封锁的网站:在一些地区,互联网服务提供商可能会限制某些网站或内容。使用HTTP代理可以绕过这些限制,访问网站或内容。

加速网站访问:HTTP代理可以缓存常用的网站,从而加速网站访问速度。当用户访问这些网站时,代理服务器会直接返回已经缓存的页面,而不是从互联网上重新获取页面。

提高安全性:HTTP代理可以用于监控网络流量,防止恶意攻击和黑客入侵。代理服务器可以检测并拦截恶意流量,从而保护网络和用户的安全。

HTTP代理在国内的使用情况,HTTP代理在国内的使用情况相对来说比较广泛,网络加速:由于中国的网络状况较差,许多用户使用HTTP代理来加速他们的网络连接。代理服务器可以缓存常用的网站,从而加速网站访问速度。

HTTP代理的插件通常是指在浏览器中安装的扩展程序,它们可以增强浏览器的功能,改善用户的网页浏览体验。以下是HTTP代理插件的一些常见作用:

1.提供更好的隐私保护:一些HTTP代理插件可以隐藏用户的真实IP地址和位置信息,从而提供更好的隐私保护。

2.网站的限制:一些HTTP代理插件可以绕过网站或绕过地理位置限制,让用户可以访问其他区域范围内的网站和服务。

3.增加安全性:一些HTTP代理插件可以拦截软件、广告和跟踪器,从而提高用户的安全性。

4.提供更快的网络连接:一些HTTP代理插件可以缓存常用的网页和资源,从而提供更快的网络连接速度。

5.自定用户体验:一些HTTP代理插件可以改变网站的外观和功能,让用户可以自定义自己的浏览体验

HTTP如何设置代理

在大多数操作系统和应用程序中,HTTP代理设置通常可以在网络设置中找到。以下是一些常见的操作系统和应用程序中HTTP代理设置的方法:

Windows操作系统中,HTTP代理设置可以在“Internet选项”中找到。打开Internet Explorer浏览器,选择“工具”-“Internet选项”,在“连接”选项卡中,选择“局域网设置”,然后输入代理服务器的地址和端口号。

Mac操作系统中,HTTP代理设置可以在“网络”设置中找到。打开“系统偏好设置”,选择“网络”,然后点击“高级”选项卡,在“代理”选项卡中选择“Web代理(HTTP)”或“安全Web代理(HTTPS)”,输入代理服务器的地址和端口号。

在大多数浏览器中,HTTP代理设置可以在“选项”或“设置”中找到。打开浏览器,点击“选项”或“设置”,然后找到“网络”或“连接”选项,输入代理服务器的地址和端口号。

java怎么写http代理,多级http代理级联

java怎么写http代理,多级http代理级联

java怎么写http级联代理服务器,多级http代理级联,我有java http代理服务器的代码,但是中间代理不知道怎么写 

Python-Scapy或类似工具-如何在数据包级别创建HTTP GET请求

Python-Scapy或类似工具-如何在数据包级别创建HTTP GET请求

我是一个中等水平的程序员,只是涉足网络编程。

为了提高我对一般网络的理解,我尝试从数据包级别执行一些基本的HTTP操作。我的问题是:如何使用SCAPY之类的库在数据包级别构建HTTP
GET请求和相关项?我意识到这听起来有些奇怪,但是我似乎找不到任何详细的信息,而我自己对PAROS和Ethereal的尝试却……令人不满意。

感谢您提供的任何帮助!

特里米特

答案1

小编典典

如果要进行完整的三向握手,则必须手动进行。

从您的SYN数据包开始:

>>> syn = IP(dst=''www.google.com'') / TCP(dport=80, flags=''S'')>>> syn<IP  frag=0 proto=tcp dst=Net(''www.google.com'') |<TCP  dport=www flags=S |>>

然后从服务器接收SYN-ACK数据包,sr1起作用。然后发送您的HTTP GET请求:

>>> syn_ack = sr1(syn)Begin emission:Finished to send 1 packets.*Received 1 packets, got 1 answers, remaining 0 packets>>> syn_ack<IP  version=4L ihl=5L tos=0x0 len=44 id=424 flags= frag=0L ttl=55 proto=tcp chksum=0x2caa src=74.125.226.148 dst=10.20.30.40 options=[] |<TCP  sport=www dport=ftp_data seq=3833491143 ack=1 dataofs=6L reserved=0L flags=SA window=5720 chksum=0xd8b6 urgptr=0 options=[(''MSS'', 1430)] |<Padding  load=''\x00\x00'' |>>>

然后设置您的TCP序列和确认号并发送GET:

getStr = ''GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n''request = IP(dst=''www.google.com'') / TCP(dport=80, sport=syn_ack[TCP].dport,             seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags=''A'') / getStrreply = sr1(request)

python套接字

python套接字

udp客户端

import socket
import sys


def mian(argv):
  #创建套接字,类型为ipv4(AF_INET),协议为UDP(SOCK_DGRAM)
    up_socket = socket.socket(socket.AF_INET,socket.soCK_DGRAM)
    while 1:
        send_data=input("input your speak:")
        
        if send_data=="break":
            break
        #发送数据给指定的Ip和端口号,内容类型为utf-8
       # up_socket.sendto(b"hahhahah",("172.21.204.107",8080))
        up_socket.sendto(send_data.encode("utf-8"),(argv,8080))
    #使用完要关闭套接字
    up_socket.close()

if __name__=="__main__":
    mian(sys.argv[1])

tcp服务端

import socket

def main():
	  #创建套接字,类型为ipv4(AF_INET),协议为TCP(SOCK_STREAM)
    tcp_socket=socket.socket(socket.AF_INET,socket.soCK_STREAM)
		
    #服务端绑定端口和Ip
    tcp_socket.bind(("",8080))
		
    #设置同时能接听为128台服务
    tcp_socket.listen(128)
    while True:
        print("wait a newclinet come to...")
        #阻塞等待客户端连接,accpet函数返回值为跟客户端连接的套接字和客户端的IP和端口号
        new_client,ipaddr = tcp_socket.accept()
        print("a new clinet come here!....")

        print(str(ipaddr))
        while 1:
						#TCP接受数据使用recv函数
            #UDP接受数据使用recvfrom函数
            recv_data = new_client.recv(1024)
            #对发来的数据进行utf-8解码
            if recv_data.decode("utf-8")=="break":
                break;
            else:
                print("data from clinet:%s"%recv_data.decode("utf-8"))
								
                #TCP发送数据使用send函数
                #UDP发送数据使用sendto函数
                new_client.send("-------ok---------".encode("utf-8"))

        #同理使用完关闭套接字
        new_client.close()
        print("had to close")
        tcp_socket.close()


if __name__ =="__main__":
    main()

UDP服务端

import socket
import sys

def main():

  a = socket.socket(socket.AF_INET,socket.soCK_DGRAM)
  #绑定ip和端口,只能绑定自己
  localaddr=("",8080)
  #不用说服务端肯定绑定ip和端口
  a.bind(localaddr)

  #不用使用accpect函数进行阻塞等待
  while 1:
      #一直接受信息,大小为1024
      data = a.recvfrom(1024)
      #打印元组中的正确信息
      data1 = data[0]
      data2 = data[1] #对方客户端的IP和端口号
      if data1 == "break":
          break
      else:
          #解码utf-8
          print("%s:%s"%(str(data2),data1.decode("utf-8")))
  a.close()

if __name__ =="__main__":
    main()

TCP客户端

import socket

def main():

      up_socket = socket.socket(socket.AF_INET,socket.soCK_STREAM)

      ipaddr = input("请输入你要传的ip:")
      ports = int(input("请输入端口:"))

      new_client=(ipaddr,ports)
      #tcp需要进行连接服务器
      if up_socket.connect(new_client):
          print("connect is ok!")

      send_data = input("请输入你要传的数据:")

      up_socket.send(send_data.encode("utf-8"));
      if up_socket.recv(1024):
          data = up_socket.recv
          print("data from service:%s"% str(data))


      else:
          up_socket.close()

if __name__ =="__main__":
    main()

非阻塞实现

import socekt
import time

def main():
    tcp_server = socket.socket(socket.AF_INET,socket.soCK_STREAM)
    tcp_server.bind(("",7891))
    tcp_server.listen(128)
    clinet_list = list()
    while True:
        time.sleep(0.5)
        try:
            tcp_server.setblocking(False)
            clinet_socket,clinet_ip = tcp_server.accept()
        except:
            print("没有新的客户端连接")
        else:
            print("有一个客户端连接是%s" %(str(clinet_ip)))
            clinet_socket.setblocling(False)
            clinet_list.append(clinet_socket)

        for i in clinet_list:
            try:
                recv_datas = i.recv(1024)
            except:
                pass
            else:
                if recv_datas:
                    print("recv is ok!")
                else:
                    i.close()
                    clinet_list.remove(i)
                    print("客户端关闭")


if __name__=="__main__":
    main()

今天关于Python套接字模块连接到HTTP代理,然后在外部资源上执行GET请求套接字 python的介绍到此结束,谢谢您的阅读,有关HTTP代理,什么是HTTP代理?HTTP代理如何设置?HTTP代理的用途?、java怎么写http代理,多级http代理级联、Python-Scapy或类似工具-如何在数据包级别创建HTTP GET请求、python套接字等更多相关知识的信息可以在本站进行查询。

本文标签: