1

我想知道,HTTP CLIENT 如何同时向服务器发出 100 个请求,但每个请求使用不同的 IP 地址或IP 地址范围,python 中的代码或通过配置不同的 IP 地址或 IP 范围在代码中使用 CURL 函数地址

请帮助我编辑代码以使用不同的 IP 地址请求服务器上的 Html 或网页并读取其内容来发出多个请求。

幸运的是,python 为我们提供了一个 HTTP 服务器模块,它被称为 BaseHTTPServer。我们使用该模块中的两个类,即 BaseHTTPRequestHandler 和 HTTPServer。我们还需要使用 os 模块来访问您系统中的文件。

首先,我们需要导入这些模块

#!/usr/bin/env python



from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import os

接下来,编写一个实现 BaseHTTPRequestHandler 的自定义类 KodeFunHTTPRequestHandler。

#Create custom HTTPRequestHandler class
class KodeFunHTTPRequestHandler(BaseHTTPRequestHandler):

我只是从 HTTP 实现 GET 命令。为此,我们需要重写 do_GET() 函数。我们的目标是使用我们的客户端从服务器请求一个 HTML 文件(在下一步中解释)。do_GET() 函数中的脚本用于处理我们的目标

#handle GET command
def do_GET(self):
    rootdir = 'c:/xampp/htdocs/' #file location
    try:
        if self.path.endswith('.html'):
            f = open(rootdir + self.path) #open requested file


        #send code 200 response
        self.send_response(200)

        #send header first
        self.send_header('Content-type','text-html')
        self.end_headers()

        #send file content to client
        self.wfile.write(f.read())
        f.close()
        return

except IOError:
    self.send_error(404, 'file not found')

最后,添加以下脚本来运行服务器

def run():
    print('http server is starting...')


#ip and port of servr
#by default http server port is 80
server_address = ('127.0.0.1', 80)
httpd = HTTPServer(server_address, KodeFunHTTPRequestHandler)
print('http server is running...')
httpd.serve_forever()

if __name__ == '__main__':
    run()

保存并命名为任何您想要的名称(例如,kodefun-httpserver.py)。这是http服务器的完整脚本:

kodefun-httpserver.py


#!/usr/bin/env python

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import os

#Create custom HTTPRequestHandler class
class KodeFunHTTPRequestHandler(BaseHTTPRequestHandler):

        #handle GET command
        def do_GET(self):
                rootdir = 'c:/xampp/htdocs/' #file location
                try:
                        if self.path.endswith('.html'):
                                f = open(rootdir + self.path) #open requested file

                                #send code 200 response
                                self.send_response(200)

                                #send header first
                                self.send_header('Content-type','text-html')
                                self.end_headers()

                                #send file content to client
                                self.wfile.write(f.read())
                                f.close()
                                return

                except IOError:
                        self.send_error(404, 'file not found')

def run():
print('http server is starting...')

#ip and port of servr
#by default http server port is 80
server_address = ('127.0.0.1', 80)
httpd = HTTPServer(server_address, KodeFunHTTPRequestHandler)
print('http server is running...')
httpd.serve_forever()

if __name__ == '__main__':
    run()

编写一个简单的 HTTP 客户端

要检查我们的服务器是否工作正常,我们需要一个 HTTP 客户端。您可以使用您的网络浏览器来执行此操作。但是,如果您自己制作客户,那就太酷了。为此,让我们编写另一个脚本,将其命名为 kodefun-httpclient.py。将以下脚本复制到您的文件中:kodefun-httpclient.py

#!/usr/bin/env python (CLIENT CODE)

import httplib
import sys

#get http server ip
http_server = sys.argv[1]
#create a connection
conn = httplib.HTTPConnection(http_server)

while 1:
            cmd = raw_input('input command (ex. GET index.html): ')
            cmd = cmd.split()

            if cmd[0] == 'exit': #tipe exit to end it
                        break

            #request command to server
            conn.request(cmd[0], cmd[1])


            #get response from server
            rsp = conn.getresponse()

            #print server response and data
            print(rsp.status, rsp.reason)
            data_received = rsp.read()
            print(data_received)

conn.close

使用 GET 命令进行测试

4

0 回答 0