Python多线程和代理请求示例

news2024/11/27 18:49:42

这是一个python多线程调用和代理提交的示例
可以用于负载均衡测试和高并发测试

import hashlib
import json
import random
import sys
import threading
import time
import requests as requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# 请求部分,按顺序使用所有代理
url = ""
url2 = ""
cnt = 0
max_threads = 5
cnt_lock = threading.Lock()

headers = {
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,zh-TW;q=0.5",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "sec-ch-ua": "\"Microsoft Edge\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "x-requested-with": "XMLHttpRequest",
}

def send_requests(proxy):
    global cnt  # 使用全局的 cnt 变量
    session = requests.Session()
    session.proxies = proxy
    while True:
       

        data1 = {
            
        }
        data2 = {
           
        }
        #F323110310550316454O
        try:
            res = session.post(url=url, headers=headers, data=json.dumps(data1),verify=False,allow_redirects=False)
            res2 = session.post(url=url2, headers=headers, data=json.dumps(data2),verify=False,allow_redirects=False)

            # 如果当前代理地址被屏蔽,可以根据具体条件检查状态码或内容
            # if res.status_code != 200 or res2.status_code != 200 or "alert" in res.text or "alert" in res2.text:
            #     print(f"Proxy {proxy['http']} is blocked. Exiting thread.")
            #     return  # 退出线程
        except requests.exceptions.RequestException as e:
            print(f"Request error with proxy {proxy['http']}: {e}")
            # return  # 出现异常,退出线程

            # 处理响应
        print("\rProcessing: cnt={}, status1={}, status2={}, 当前线程数: {}".format(cnt, res.text, res2.text.strip(),
                                                                                  threading.active_count()), end='', flush=True)
        cnt += 1

# 获取代理信息的部分(与上面的示例代码相同)




_version = sys.version_info
is_python3 = (_version[0] == 3)
orderno = "###"
secret = "###"
ip = "dtan.xiongmaodaili.com"
port = "8088"
ip_port = ip + ":" + port
timestamp = str(int(time.time()))

txt = "orderno=" + orderno + "," + "secret=" + secret + "," + "timestamp=" + timestamp

if is_python3:
    txt = txt.encode()

md5_string = hashlib.md5(txt).hexdigest()
sign = md5_string.upper()

auth = "sign=" + sign + "&" + "orderno=" + orderno + "&" + "timestamp=" + timestamp + "&change=true"
proxy = {"http":"http://" + ip_port, "https": "http://" + ip_port}
headers = {"Xiongmao-Proxy-Authorization": auth, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"}

# headers = {"Proxy-Authorization": auth,"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"}
# api_url = ""
#
#
# response = requests.get(api_url)
# print(response)
#     # 定义代理列表
# proxies = []
#
# # 检查响应是否成功
# if response.status_code == 200:
#     data = response.json()
#     if data.get("code") == "0":
#         proxy_list = data.get("obj")
#         if proxy_list:
#             for proxy in proxy_list:
#                 ip = proxy.get("ip")
#                 port = proxy.get("port")
#                 proxy_dict = {
#                     "http": f"http://{ip}:{port}",
#                     "https": f"http://{ip}:{port}"
#                 }
#                 proxies.append(proxy_dict)
#                 print(f"Added Proxy: {ip}:{port}")
#         else:
#             print("Error: No available proxy found.")
#     else:
#         print(f"Error: {data.get('msg')}")
# else:
#     print(f"Error: Failed to retrieve proxy information. Status code: {response.status_code}")

# 创建线程列表
threads = []

# 遍历代理列表并创建线程
for i in range(10):
    thread = threading.Thread(target=send_requests, args=(proxy,))
    threads.append(thread)

# 启动线程
for thread in threads:
    thread.start()

# 等待所有线程完成
for thread in threads:
    thread.join()


使用效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows jar包文件默认打开方式设置

1、管理员权限打开“注册表编辑器”; 2、定位到计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts项下,找到.jar项,再选中UserChoice项,其中ProgId值为jarfile 3、定位到计算机\HKEY_CLAS…

Pixhawk2.4.8接口及引脚定义

pixhawk2.4.8实物图 pixhawk侧边信号线插口 遥控器接收机、电调信号线插在这里 pixhawk侧边功能口 Micro-USB接口用来烧录固件、SD卡中有飞行日志等信息 pixhawk主面板接口 主面板接口功能概览 主面板接口定义 参考博客: https://zhuanlan.zhihu.com/p/61106155…

分布式训练原理总结(DP、PP、TP 、ZeRO)

文章目录 一、分布式训练基础知识1.1 集合通信、集合通信库1.2 通信模式1.2.1 Parameter Server(2014)1.2.2 Ring-AllReduce(2017) 1.3 同步范式1.4 大模型训练的目标公式 二、数据并行2.1 DataParallel(DP)2.2 Distri…

c++学习3——几个感悟

一些感悟 1 虚拟目录2 浏览器和微信的本质区别3 资源文件 1 虚拟目录 电脑文件中并没有这个目录,比如vs2019在编程时, c的头文件.h文件和源文件.cpp文件实际上在一个目录,但是在vs2019中前者显示在头文件文件夹中,后者显示在源文…

mybatis-plus技巧--动态表名-多语句-拼接sql--关于mybatis的mysql分页查询总数的优化思考

文章目录 动态表名xml表名填充表名拦截器每天按统计每次设置 多语句操作forEach动态拼接 参数构建java进行拼接sqlmysql分页查询总数count不要使用count(常数),count(列名)代替count(*)自己计数 SQL_CALC_FOUND_ROWSxm…

左偏树学习笔记

定义 堆,是一棵树,且每个节点的键值都大于等于 / 小于其父亲的键值。 左偏树是一种可合并的堆,可以以 O ( log ⁡ n ) O(\log n) O(logn) 的复杂度实现合并。 性质 左偏树满足堆的性质。 我们设定一个值 dist \text{dist} dist&#xf…

学习笔记|配对设计卡方检验|配对及二分类变量|McNemar检验|规范表达|《小白爱上SPSS》课程:SPSS第十七讲 | 配对设计卡方检验怎么做?

目录 学习目的软件版本原始文档配对设计卡方检验一、实战案例读数据 二、统计策略三、SPSS操作四、结果解读第一,卡方检验结果第二,分析统计结果 五、规范报告1、规范表格2、规范文字 学习目的 SPSS第十七讲 | 配对设计卡方检验怎么做? 软件…

如何在嵌入式软件开发的过程中使用DevSecOps方法,提升开发效率与安全性

DevOps可以帮助软件开发和IT从僵化的瀑布式开发脱离出来,转为更灵活的敏捷开发,使开发团队能够更快地解决问题、降低代码复杂性并加快产品交付。 既然DevOps有这么多的好处,那么对于希望确保软件开发过程安全的开发团队来说,下一…

学习笔记三十四:Ingress和 Ingress Controller概述

Ingress和 Ingress Controller概述 回顾service四层负载在k8s中为什么要做负载均衡Service不足之处四层负载和七层负载的区别OSI七层模型: Ingress介绍Ingress Controller介绍Ingress-controller 作用Ingress和Ingress Controller总结使用Ingress Controller代理k8s…

学习笔记|多组率卡方检验和Fisher确切法|个案加权|规范表达|《小白爱上SPSS》课程:SPSS第十六讲 | 多组率卡方检验和Fisher确切法

目录 学习目的软件版本原始文档多组率卡方检验和Fisher确切法一、实战案例二、统计策略三、SPSS操作1、个案加权2、卡方检验 四、结果解读第一,分组统计描述结果第二,卡方检验。 五、规范报告1、规范表格2、规范文字 六、划重点 学习目的 SPSS第十六讲 …

java JUC并发编程 第十章 Synchronized与锁升级

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 第四章 java JUC并发编程 java内存模型JMM: link 第五章 java JUC并发编程 volatile与JMM: link 第六章 java JUC并发编程 CAS: link 第七…

vivado 报错之procedural assignment to a non-register result is not permitted“

文章目录 这个错误通常是由于尝试在非寄存器类型的对象上进行过程赋值所引起的。在 Verilog 中,当使用 always 块时,其中的赋值操作应该只用于寄存器类型的变量,比如 reg 类型。非寄存器类型的信号(比如 wire)不能在 a…

如何将苹果手机照片导出?教你3个导出照片的必备技巧!

照片是我们记录生活,以及留下美好瞬间的最佳方式之一。通过手机照片,我们可以随时随地回忆过去的点点滴滴,还能将其分享给朋友和家人。因此,照片对于大家来说具有不可替代的价值与意义。 为了防止手机照片丢失,部分小…

WPF布局控件之WrapPanel布局

前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: 后续排序按照从上至下或从右至左的顺序进行,具体取决于方向属性的值。WrapPanel 位…

beego模板解析报错

文章目录 前言解决beego解析问题总结 前言 网上搜索为模板解析路径问题,实际是beego解析vue打包后的index.html出现错误, 比如解决时排除了.go代码,发现没问题,运行beego打印,打开浏览器进入web时发现wen打不开,并在b…

支付宝本地生活团购服务商如何申请?两个方法教给你

支付开宝的本地生活来了!按支付宝财大气粗的做法,它一旦要推什么项目,那自然会在前期疯狂洒钱,以求通过这种模式快速占领市场。 所以,这次支付宝要推本地生活项目,这一贯做法自然得跟上,只是这…

2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”

人工智能(Artificial Intelligence,AI)作为当今世界科技发展的关键领域之一,正不断推动着各行各业的创新和变革。作为世界上最大的消费市场之一,中国正在积极努力将AI技术与产业融合并加速推广应用。在这个背景下&…

基于Chirp窄带扩频技术的无线混合组网应用,以多角色智能计量插座作为Chirp广域基站,构建边缘计算混合无线网络

随着物联网(IoT)的不断发展,无线通信技术的需求也在不断增加。Chirp窄带扩频技术是一种具有广泛应用潜力的无线通信技术,它在低功耗、广域覆盖、抗干扰等方面具备独特的优势。本文介绍了如何利用磐启微Chirp技术构建ECWAN无线混合…

混合式ANC主动降噪耳机系统设计(含C源代码)

混合式ANC主动降噪耳机系统设计(含C源代码) 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 1 FF信号链路与FB 链路算法处理上一样 X(n)为噪声输…

强化学习的动态规划

一、动态规划 动态规划(DP)一词指的是一系列算法,这些算法可用于在给定环境的完美模型作为马尔可夫决策过程(MDP)的情况下计算最优策略。经典的DP算法在强化学习中具有有限的实用性,既因为其对完美模型的假…