【问题标题】:Can't get VPN checker working with JSON api无法让 VPN 检查器与 JSON api 一起使用
【发布时间】:2022-01-02 16:49:41
【问题描述】:

我正在用 python 编写一个 VPN 检查器,我无法让它与 JSON api 一起工作,因为它给出了一个错误:

TypeError: slice indices must be integers or None or have an __index__ method

我的代码:

import requests
import threading
from requests import get
import urllib.request
import json
import colorama
from colorama import Fore
import os
colorama.init()

with urllib.request.urlopen(f"https://vpnapi.io/api/{ip}?key=apikey") as url: data = json.dumps(url.read().decode())

    vpn=data["security":"vpn"]
    proxy=data["'security":"proxy"]
    tor=data["security":"tor"]
    relay=data["security":"relay"]

    print(Fore.RED + f"\nVPN:" , Fore.WHITE + f"{vpn}")
    print(Fore.RED + f"\Proxy:" , Fore.WHITE + f"{proxy}")
    print(Fore.RED + f"\Tor:" , Fore.WHITE + f"{tor}")
    print(Fore.RED + f"\Relay:" , Fore.WHITE + f"{relay}")

【问题讨论】:

  • 不应该换行吗data = json.dumps(url.read().decode())
  • 没关系

标签: python json api


【解决方案1】:

您的代码中返回的数据是一个字符串,不容易处理。考虑将 requests 模块用于这些类型的 API 请求应用程序。

import colorama
import requests
from colorama import Fore

colorama.init()
api_key = "xxxx"
ip_address = "x.x.x.x"
url = f"https://vpnapi.io/api/{ip_address}?key={api_key}"
r = requests.get(url)
data = r.json()

vpn = data["security"]["vpn"]
proxy = data["security"]["proxy"]
tor = data["security"]["tor"]
relay = data["security"]["relay"]

print(Fore.RED + f"\nVPN:", Fore.WHITE + f"{vpn}")
print(Fore.RED + f"\nProxy:", Fore.WHITE + f"{proxy}")
print(Fore.RED + f"\nTor:", Fore.WHITE + f"{tor}")
print(Fore.RED + f"\nRelay:", Fore.WHITE + f"{relay}")

【讨论】:

  • 非常感谢
  • 请将其标记为已接受的答案,如果对您有帮助,请点赞
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多