快代理私密代理并发请求样例
import requests
import threading
import time
#快代理私密代理api
api_url = "https://dps.kdlapi.com/api/getdps/?secret_id=xxxxxxxxx&num=10&signature=xxxxxxxxxxx&pt=1&sep=1"
username = ""
password = ""
success_count = 0
fail_count = 0
total_time = 0
total_time_1 = 0
def test_proxy(proxy):
global success_count, fail_count, total_time, total_time_1
proxies = {
"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": proxy},
"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": proxy}
}
target_url = "https://dev.kdlapi.com/testproxy"
try:
start_time = time.time()
response = requests.get(target_url, proxies=proxies)
end_time = time.time()
total_time = end_time - start_time
total_time_1 += end_time - start_time
#判断响应状态码是否为200
if response.status_code == 200:
success_count += 1
print(f"代理IP {proxy} 请求成功,响应码为 {response.status_code},响应耗时:{total_time},响应内容为:\n{response.text}")
else:
fail_count += 1
print(f"代理IP {proxy} 请求失败,响应码为 {response.status_code},响应耗时:{total_time}")
except Exception as e:
fail_count += 1
print(f"代理IP {proxy} 请求失败,错误信息为:{e}")
if __name__ == '__main__':
#获取api返回的IP,并进行分隔
proxy_list = requests.get(api_url).text.split()
#创建线程池
threads = []
#遍历ip池内的全部ip,并为其创建线程
for proxy in proxy_list:
t = threading.Thread(target=test_proxy, args=(proxy,))
threads.append(t)
t.start()
#进程守护,等待其他进程完成再继续执行
for t in threads:
t.join()
success_rate = success_count / (success_count + fail_count)
average_time = total_time_1 / (success_count + fail_count)
print(f"请求成功次数:{success_count},请求失败次数:{fail_count},成功率:{success_rate:.2%},平均耗时:{average_time:.2f}秒")
隧道代理并发请求样例
import requests
import time
from concurrent.futures import ThreadPoolExecutor
requests.packages.urllib3.disable_warnings()
tunnel = "xxxxxxxxxx:15818"
# 用户名密码方式
username = "xxxxxxx"
password = "xxxxxxx"
proxies = {
"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel},
"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel}
}
headers = {
"Connection": "close",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
}
total_count = 0
error_count = 0
success_count = 0
time_use = 0
handling = 0
def fn():
global success_count
global error_count
global time_use
global handling
for i in range(1):
try:
target_url = 'https://dev.kdlapi.com/testproxy'
start_time = time.time()
response = requests.get(target_url, proxies=proxies, headers=headers, verify=False)
end_time = time.time()
one_time_use = end_time - start_time
time_use += one_time_use
if response.status_code == 200:
print(('proxy_ip: %s, http_status: %s,time: %s,text:%s ' % (
tunnel, response.status_code, one_time_use,response.text)))
success_count += 1
else:
print(('proxy_ip: %s, http_status: %s,time: %s,text:%s ' % (
tunnel, response.status_code, one_time_use, response.text)))
error_count += 1
except Exception as e:
print(e)
handling += 1
if __name__ == '__main__':
# 创建线程池
with ThreadPoolExecutor(10) as t:
# 理论最大线程数
for i in range(10):
# 线程循环次数
# time.sleep(1)
t.submit(fn)
# 等待线程池中的任务全部执行完毕. 才继续执行(守护)
print(
"""总请求数:%(sum_count)s,成功次数:%(success_count)s,\n状态码非200次数:%(error_count)s, 平均响应时间:%(avg_time_use).3fs,\n异常捕获:%(handling)s,\n异常占比:%(Abnormal_proportion)s,""" \
% {"sum_count": success_count + error_count + handling,
"success_count": success_count,
"error_count": error_count,
"avg_time_use": time_use / (error_count + success_count),
"handling": handling,
"Abnormal_proportion": handling / (success_count + error_count + handling),
}
)
网站官网:https://www.kuaidaili.com/?ref=8obu0xlavxjf