Python 如何在if-else语句中比较request.get结果
我正在制作一个新脚本,它将以太坊私钥列表作为输入,并生成带有余额的相应地址,如果找到了余额,则将其与私钥和地址一起保存在文件中 现在,我几乎可以肯定我的问题在条件中,但无法解决它 脚本步骤: 1.将私钥文件作为输入(-i标志) 2.将其转换为公共地址/解码 3.触发对Etherscan的API调用以获取有关地址的信息 4.如果API调用中的json()[“result”]>0,则将其写入输出文件(-o标志),否则打印并休眠1秒 有人能告诉我哪里出了错吗 我的代码:Python 如何在if-else语句中比较request.get结果,python,if-statement,python-requests,blockchain,ethereum,Python,If Statement,Python Requests,Blockchain,Ethereum,我正在制作一个新脚本,它将以太坊私钥列表作为输入,并生成带有余额的相应地址,如果找到了余额,则将其与私钥和地址一起保存在文件中 现在,我几乎可以肯定我的问题在条件中,但无法解决它 脚本步骤: 1.将私钥文件作为输入(-i标志) 2.将其转换为公共地址/解码 3.触发对Etherscan的API调用以获取有关地址的信息 4.如果API调用中的json()[“result”]>0,则将其写入输出文件(-o标志),否则打印并休眠1秒 有人能告诉我哪里出了错吗 我的代码: #!/usr/bin/pyt
#!/usr/bin/python
import sys, os, argparse, requests, ethereum, binascii, time
from multiprocessing import Pool
def scanether(balance):
try:
# Convert private key to address and print the result
eth_address = ethereum.utils.privtoaddr(INPUTFILE)
eth_address_hex = binascii.hexlify(eth_address).decode("utf-8")
eth_balance = requests.get("https://api.etherscan.io/api?module=account&action=balance&address=0x" + eth_address_hex + "&tag=latest&apikey=APIKEYHERE").json()["result"]
# Check if the result is > 0
if ('result' != 0) in r.eth_balance:
print("[*] Address with balance found: " + eth_address_hex + priv)
# Write match to OUTPUTFILE
fHandle = open(OUTPUTFILE,'a')
fHandle.write(eth_address_hex + privkey + "\n")
fHandle.close()
else:
print("balance: {} address: 0x{} privkey: {}".format(float(eth_balance)/100000000, eth_address_hex, priv))
time.sleep(1)
except Exception as e:
return
if __name__ == '__main__':
print("""
# Finding the Ethereum address with balance
""")
# Parse arguments
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--inputfile', default='input.txt', help='input file')
parser.add_argument('-o', '--outputfile', default='output.txt', help='output file')
parser.add_argument('-t', '--threads', default=200, help='threads')
args = parser.parse_args()
INPUTFILE=args.inputfile
OUTPUTFILE=args.outputfile
MAXPROCESSES=int(args.threads)
try:
addresses = open(INPUTFILE, "r").readlines()
except FileNotFoundError as e:
print(e)
exit(e.errno)
print("Scan in progress...")
pool = Pool(processes=MAXPROCESSES)
pool.map(scanether, addresses)
print("Scan finished.")
结果如下:
问题在于您使用的某些变量不在函数范围内:
def scanether(balance):
try:
# Convert private key to address and print the result
eth_address = ethereum.utils.privtoaddr(INPUTFILE)
...
# Check if the result is > 0
if ('result' != 0) in r.eth_balance:
print("[*] Address with balance found: " + eth_address_hex + priv)
# Write match to OUTPUTFILE
fHandle = open(OUTPUTFILE,'a')
...
except Exception as e:
return
此处INPUTFILE
和OUTPUTFILE
不在范围内,它将引发捕获的异常,然后函数简单地返回
您需要将它们作为参数传递:
def scanether(balance, INPUTFILE, OUTPUTFILE):
...
...
print("Scan in progress...")
pool = Pool(processes=MAXPROCESSES)
def scanether_wrapper(address, ifile=INPUTFILE, ofile=OUTPUTFILE):
return scanether(address, ifile, ofile)
pool.map(scanether_wrapper, addresses)
print("Scan finished.")
您可以使用下面的代码作为参考。在处理响应之前,您应该确定您提出的请求是否成功 请参阅以下代码以获取更多参考
import requests
url = "https://******.com"
r = requests.get(url)
print(r.status_code)
在处理响应之前,请务必检查状态代码是否为200
谢谢大家! 这是我第一次尝试,输出相同(空)@Awesim,那么当前输出是什么?你能用完整的信息更新你的问题吗?HTTP状态码=200吗?是否引发异常?请尝试在except中打印内容:block and check。获取结果时可能有异常。@请求的IvanVinogradov状态代码为200,没有异常。对于知道HTTP是什么的人来说,这有点不必要