代碼如下
import socket import ssl import random from locust import HttpUser,task,between class httpsSoceket(): ''' 通過socket實現https請求 ''' def __init__(self,host,port,uri,cert_pem = None,cert_key = None , ca_cert = None): self.host = host.encode() self.port = port self.uri = uri.encode() self.cert_pem = cert_pem self.cert_key = cert_key self.ca_cert = ca_cert #https單向認證 def https_request(self): s = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) s.connect((self.host, self.port)) s.send(b'GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive \r\n\r\n'%(self.uri,self.host)) response = s.recv(1024) return response.decode('utf-8') #https雙向認證 def https_muli_request(self): s = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM),certfile = self.cert_pem,keyfile = self.cert_key,cert_reqs=ssl.CERT_REQUIRED,ca_certs= self.ca_cert) s.connect((self.host,self.port)) s.send(b'GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive \r\n\r\n'%(self.uri,self.host)) response = s.recv(1024) return response.decode('utf-8') class locust_socket(HttpUser): serverip = '192.168.9.151' port = 443 getpath = '/' cert_pem='user.pem' cert_key = 'userkey.key' ca_cert = 'ca***.crt' a = httpsSoceket(host=serverip,port=port,uri=getpath,cert_pem=cert_pem,cert_key=cert_key,ca_cert=ca_cert) def httpsrequest(self): pass