python3 program to fetch hosting providers for invidious instances

📅 2023-05-08T19:40:39.236Z
👁️ 174 katselukertaa
🔓 Julkinen


# Usage: python3 invidious-hosting-providers.py > invidious-hosting-providers.csv
import shodan
import requests
import dns.resolver

api = shodan.Shodan('SHODAN_API_KEY')

print("domain;ip;invidious_api_cc;shodan_org;shodan_isp;shodan_cc")

for instance in requests.get("https://api.invidious.io/instances.json?pretty=1&sort_by=type,users").json():
    domain = instance[0]
    if ".onion" in domain or ".i2p" in domain:
        break

    result = dns.resolver.resolve(domain, 'A')
    # Check how many A records domain has (only kavin.rocks has 2)
    # print(domain, len(result))
    ip = result[0].to_text()
    try:
        info = api.host(ip)
        print(domain, ip, instance[1]["region"], info["org"], info["isp"], info["country_code"], sep=";")
    except:
        print(domain, ip, None, None, None, None, sep=";")