复制
收藏
提问
简洁

怎么把响应保存文件夹里一个响应一个文件import time import requests import json import datetime import threading import random import os import base64 import gzip import hashlib newest_version = "3.4.6" newest_version_mingzi = "小南梁" newest_version_yaoqing = "9" data_0=''' {"req":"V114","e":{"pi":"2","sk":"3","ui":"不用填"},"ev":1} ''' # 在这里修改保存的文件夹地址 output_dir = '/storage/emulated/0/0py号子' data_0= json.loads(data_0) #获取sk # 尝试从数据中获取'sk'键的值 sk_value = data_0.get('e', {}).get('sk') # 检查'sk'键是否存在 if sk_value : pi,sk,ui,= data_0["e"]["pi"], data_0["e"]["sk"], data_0["e"]["ui"] else: pi,sk,ui,= data_0["t"]["pi"], data_0["t"]["sk"], data_0["t"]["ui"] url = 'http://cloudpvz2android.ditwan.cn/index.php' headers = { 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 13; 23013RK7C Build/TKQ1.220905.001)', 'Content-Type': 'multipart/form-data; boundary=_{{}}_', 'Connection': 'Keep-Alive', 'Accept-Encoding': 'gzip' } # 发送数据 def send(data): time.sleep(0.0) #如果锁ip就增加延迟 try: start_time = time.time() response = requests.post(url, headers=headers, data=data) end_time = time.time() # 记录请求结束时间 if response.status_code == 403: print("您可能已被拓维锁ip, 请开关飞行模式解除锁定") return "ip被锁" global latency_拓维 latency_拓维 = (end_time - start_time) * 1000 # 计算延迟, 并转换为毫秒 return response.text except RuntimeError: return "" # 在发送基础上,增加判断是否成功,并且自动输出拼接语句 def send_for_intent(data, intent): response = send(data) success = "\"r\":0" in response print(intent, "成功🎉" if success else "失败") return success, response data = {} for i in range (10000): data[f'号子{i}']= {"req":"V202","e":{"ci":"91","cv":"3.4.6.1540","di":"","head":{"appId":"109","appVersion":"1.0","channelId":"54","channelSdkVersion":"dj2.2-3.14.4.574","talkwebSdkVersion":"3.0.0"},"li":"786fa1bf3c20b7d68c4d83a9afbcd59d","oi":f"{i+99999}X241909023","pi":"","r":"1263479390","s":"3b769a92b0763b564a823246caa65a39","t":"241909023|e6f144a12d94c5d89b0e54297124f1f3|46619|20240708124004d1b0de932589d4bb3f55ffadb8605ec900d7a132e568738e|bdd8553dafb1d20b5a55a35fe130675e|80faf5d0832e49b54f4a672982c0d0d2|1721709615|4399","ui":""},"ev":1} def make_更新数据包(): if not os.path.exists(output_dir): os.makedirs(output_dir) for key, value in data.items(): file_path = os.path.join(output_dir, f"{key}.txt") content= json.dumps(value, separators=(',', ':'),ensure_ascii=False) with open(file_path, 'w', encoding='utf-8') as file: file.write(content) input("所有文件已保存完成,请手动加密整个文件夹'0py号子',该文件夹应该位于手机根目录下") def make_发送拼接提示(data_数据包, data_提示, file_path=None): # 如果file_path没有提供,则使用output_dir和data_数据包来构造文件名 if file_path is None: file_path = os.path.join(output_dir, f'{data_数据包}.txt') try: with open(file_path, 'r', encoding='utf-8') as file: data = file.read() suc, r = send_for_intent(data, data_提示) return suc, r except FileNotFoundError: print(f"没有找到文件:{file_path}") return False, None # 或者根据你的需求返回合适的值 except Exception as e: # 捕获其他可能的异常 print(f"读取文件时发生错误:{e}") return False, None # 或者根据你的需求返回合适的值 def make_号子(): c=0 for i in range(10000): suc,r=make_发送拼接提示(f'号子{i}',f'号子发送第{i+1}次') c=c+1 if suc else c if c ==10000: print("号子已完成") return print(response.text) def display_menu(): print(" ㅤ抓包后手动解密数据包,填入data_0,再运行本程序") print(" 先选择1更新数据包,再用DART或者其他软件加密手机根目录下的'0py邀请'文件夹,加密后再次运行本程序选择其他功能") print(" ㅤ 粒了 ") print(" ㅤ1:更新数据包") print(" ㅤ 2:号子") print(" ㅤq:退出") print(" ㅤㅤ请选择要执行的任务(可多选, 以空格分隔,按回车键执行):") def call_functions(choices): for choice in choices: if

728c543f9
2个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

要实现一个响应一个文件的功能,你可以使用Python的文件操作来将每个响应保存到单独的文件中。以下是你提供的代码的一个修改版本,它将每个响应保存到一个单独的文件中:

import os
import json
import requests

# 其他代码保持不变

def send(data):
    # 发送数据的代码保持不变
    # ...
    return response.text

def save_response_to_file(response, file_name):
    """将响应保存到文件中"""
    try:
        with open(file_name, 'w', encoding='utf-8') as file:
            file.write(response)
    except Exception as e:
        print(f"保存文件时发生错误:{e}")

def send_and_save(data, file_name):
    """发送请求并保存响应到文件"""
    response = send(data)
    save_response_to_file(response, file_name)
    return response

def make_号子():
    c = 0
    for i in range(10000):
        file_name = os.path.join(output_dir, f'号子{i}.txt')
        suc, r = send_and_save(data[f'号子{i}'], file_name)
        c = c + 1 if suc else c
        if c == 10000:
            print("号子已完成")
            break  # 完成所有请求后退出循环

# 其他函数保持不变

# 调用make_号子函数来执行发送请求和保存响应的操作
make_号子()

在这个修改版本中,我添加了save_response_to_file函数,它接受响应和文件名作为参数,并将响应内容写入指定的文件。然后,我修改了make_号子函数,使用send_and_save函数来发送请求并保存响应到文件。

请注意,这个代码示例假设你已经有了一个名为data的字典,其中包含了所有要发送的数据,以及一个名为output_dir的变量,它指定了保存文件的目录。

此外,我还添加了一个break语句在make_号子函数中,以确保在所有请求完成后退出循环。这是因为你的原始代码中有一个return语句,但在循环内部使用return会导致函数立即退出,而不是跳出循环。使用break可以正确地跳出循环。

你觉得结果怎么样?
如何使用Python保存HTTP响应到文件?
Python中requests库如何发送POST请求?
如何在Python中处理JSON数据?
Python多线程如何实现并发请求?
Python中如何使用gzip压缩数据?
如何使用Python的hashlib库进行哈希计算?

以上内容由AI搜集生成,仅供参考

在线客服