发布时间:2024-01-17 17:29:24
下载解压文件后,修改里面的url信息,运行py即可。
附件:
最后一行合并文件功能选择性开启。
代码如下:
import time from selenium import webdriver from selenium.webdriver.chrome.options import Options import requests import json import re import os # 网址:https://fofa.info/ # 搜素关键词:"iptv/live/zh_cn.js" && country="CN" && region="Henan" && city="Zhengzhou" regions = { "陕西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhYW54aSI%3D", "湖南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0i5rmW5Y2XIg%3D%3D", #"河南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iaGVuYW4i", #"安徽" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQW5odWki", #"北京" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQmVpamluZyI%3D", #"重庆" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQ2hvbmdxaW5nIg%3D%3D", #"贵州" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iR3VpemhvdSI%3D", #"河北" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSGViZWki", #"湖北" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSHViZWki", #"江苏" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSmlhbmdzdSI%3D", #"江西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSmlhbmd4aSI%3D", #"辽宁" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iTGlhb25pbmci", #"山东" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbmRvbmci", #"上海" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbmdoYWki", #"山西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbnhpIg%3D%3D", #"四川" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2ljaHVhbiI%3D", #"天津" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iVGlhbmppbiI%3D", #"云南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iWXVubmFuIg%3D%3D", #"浙江" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iWmhlamlhbmci", #"Zhengzhou" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlpoZW5nemhvdSI%3D", #"Xinxiang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlhpbnhpYW5nIg%3D%3D", #"Luoyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ikx1b3lhbmci", #"Luohe" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ikx1b2hlIg%3D%3D", #"Xuchang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ilh1Y2hhbmci", # "Zhoukou" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ilpob3Vrb3Ui", #"Pingdingshan" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlBpbmdkaW5nc2hhbiI%3D", #"Anyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IkFueWFuZyI%3D", #"Shangqiu" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlNoYW5ncWl1Ig%3D%3D", #"Zhumadian" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlpodW1hZGlhbiI%3D", #"Puyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlB1eWFuZyI%3D", } def process_url(region, url): # 创建一个Chrome WebDriver实例 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=chrome_options) # 使用WebDriver访问网页 driver.get(url) # 将网址替换为你要访问的网页地址 time.sleep(10) # 获取网页内容 page_content = driver.page_source # 关闭WebDriver driver.quit() # 查找所有符合指定格式的网址 pattern = r"http://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+" # 设置匹配的格式,如http://8.8.8.8:8888 urls_all = re.findall(pattern, page_content) urls = list(set(urls_all)) # 去重得到唯一的URL列表 for url in urls: print(url) # 遍历网址列表,获取JSON文件并解析 results = [] for url in urls: try: # 发送GET请求获取JSON文件,设置超时时间为5秒 json_url = f"{url}/iptv/live/1000.json?key=txiptv" response = requests.get(json_url, timeout=5) json_data = response.json() # 解析JSON文件,获取name和url字段 for item in json_data['data']: if isinstance(item, dict): name = item.get('name') urlx = item.get('url') urld = f"{url}{urlx}" if name and urlx: # 删除特定文字 name = name.replace("中央", "CCTV") name = name.replace("高清", "") name = name.replace("标清", "") name = name.replace("频道", "") name = name.replace("-", "") name = name.replace(" ", "") name = name.replace("PLUS", "+") name = name.replace("(", "") name = name.replace(")", "") results.append(f"{name},{urld}") except requests.exceptions.RequestException as e: print(f"Failed to process JSON for URL {json_url}. Error: {str(e)}") continue except json.JSONDecodeError as e: print(f"Failed to parse JSON for URL {url}. Error: {str(e)}") continue return results # 将结果保存到文本文件 def save_results(results, filename): with open(filename, "w", encoding="utf-8") as file: for result in results: file.write(result + "\n") print(result) directory = "地区源" # 文件目录不存在,则创建文件目录 if not os.path.exists(directory): os.makedirs(directory) # 删除旧文件 existing_files = os.listdir(directory) for file_name in existing_files: file_path = os.path.join(directory, file_name) if os.path.isfile(file_path): os.remove(file_path) for region, url in regions.items(): results = process_url(region, url) save_results(results, os.path.join(directory, f"{region}.txt")) # 合并结果成一个文件 def merge_txt_files(): # 获取当前脚本所在目录 script_dir = os.path.dirname(os.path.abspath(__file__)) dir_path = os.path.join(script_dir, "地区源") # 检查目录是否存在 if not os.path.exists(dir_path): print(f"目录 '地区源' 不存在.") return # 获取目录下所有的txt文件 txt_files = [file for file in os.listdir(dir_path) if file.endswith(".txt")] # 检查是否有txt文件 if not txt_files: print(f"目录 '地区源' 中没有找到txt文件.") return # 合并文件内容 merged_content = "" for txt_file in txt_files: file_path = os.path.join(dir_path, txt_file) with open(file_path, "r", encoding="utf-8") as file: merged_content += file.read() + "\n" # 将合并后的内容写入新文件 merged_file_path = os.path.join(script_dir, "合并源.txt") with open(merged_file_path, "w", encoding="utf-8") as merged_file: merged_file.write(merged_content) print(f"合并完成,合并文件保存在: {merged_file_path}") # 调用函数 merge_txt_files()