فهرست منبع

优化 save all proxy ip data

derrickx 1 سال پیش
والد
کامیت
83c815f9d3

+ 26 - 3
livepocket/302_full.py

@@ -1,11 +1,12 @@
+import datetime
 import json
 import multiprocessing
 import random
 import re
+import sched
 import threading
 import time
 import traceback
-from datetime import datetime
 from urllib import parse
 
 import requests
@@ -257,9 +258,31 @@ def run_poc(account, password, url, log_name, single_proxy):
         loggerKit.error(f'error: {traceback.format_exc()}, account:{account}')
 
 
+def run_daily_job(hour, minute):
+    # 获取当前日期和时间
+    now = datetime.datetime.now()
+    # 计算下次运行时间
+    run_time = datetime.datetime(now.year, now.month, now.day, hour, minute)
+    if run_time < now:
+        # 如果运行时间小于当前时间,则在明天的相应时间运行任务
+        run_time = run_time + datetime.timedelta(days=1)
+    # 计算等待时间
+    wait_time = (run_time - now).total_seconds()
+    # 创建定时器对象
+    scheduler = sched.scheduler(time.time, time.sleep)
+    # 添加定时任务
+    scheduler.enter(wait_time, 1, looper_job, ())
+    # 启动定时器
+    scheduler.run()
+
+
+def looper_job():
+    while 1:
+        process_running(max_threads=6)
+
+
 if __name__ == '__main__':
     # 新增下面一行代码即可打包多进程
     multiprocessing.freeze_support()
 
-    while 1:
-        process_running(max_threads=6)
+    run_daily_job(7, 59)

BIN
tools/__pycache__/__init__.cpython-311.pyc


BIN
tools/__pycache__/logger_util.cpython-311.pyc


BIN
tools/__pycache__/redis_pool.cpython-311.pyc


BIN
tools/__pycache__/redis_util.cpython-311.pyc


+ 3 - 0
tools/logs/rpa-terminal_2024-05-11.log

@@ -0,0 +1,3 @@
+{"text": "2024-05-11 07:14:44 INFO From utils.get_external_ip : 公网出口IP地址:\n", "record": {"elapsed": {"repr": "0:00:00.531623", "seconds": 0.531623}, "exception": null, "extra": {}, "file": {"name": "utils.py", "path": "/Volumes/work/project/awesome-python/tools/utils.py"}, "function": "get_external_ip", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 275, "message": "公网出口IP地址:", "module": "utils", "name": "__main__", "process": {"id": 18439, "name": "MainProcess"}, "thread": {"id": 140704326104832, "name": "MainThread"}, "time": {"repr": "2024-05-11 07:14:44.775411+08:00", "timestamp": 1715382884.775411}}}
+{"text": "2024-05-11 07:15:13 INFO From utils.get_external_ip : 公网出口IP地址:\n", "record": {"elapsed": {"repr": "0:00:00.405496", "seconds": 0.405496}, "exception": null, "extra": {}, "file": {"name": "utils.py", "path": "/Volumes/work/project/awesome-python/tools/utils.py"}, "function": "get_external_ip", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 275, "message": "公网出口IP地址:", "module": "utils", "name": "__main__", "process": {"id": 18462, "name": "MainProcess"}, "thread": {"id": 140704326104832, "name": "MainThread"}, "time": {"repr": "2024-05-11 07:15:13.968268+08:00", "timestamp": 1715382913.968268}}}
+{"text": "2024-05-11 07:15:31 INFO From utils.get_external_ip : 公网出口IP地址:203.184.131.116\n", "record": {"elapsed": {"repr": "0:00:00.389999", "seconds": 0.389999}, "exception": null, "extra": {}, "file": {"name": "utils.py", "path": "/Volumes/work/project/awesome-python/tools/utils.py"}, "function": "get_external_ip", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 275, "message": "公网出口IP地址:203.184.131.116", "module": "utils", "name": "__main__", "process": {"id": 18473, "name": "MainProcess"}, "thread": {"id": 140704326104832, "name": "MainThread"}, "time": {"repr": "2024-05-11 07:15:31.853945+08:00", "timestamp": 1715382931.853945}}}

+ 16 - 5
tools/utils.py

@@ -264,8 +264,19 @@ def run_daily_task(hour, minute, page, page_size):
 
 
 def get_external_ip():
-    with urllib.request.urlopen("http://ifconfig.me/ip") as response:
-        return response.read().decode().strip()
+    # 获取公网出口IP地址
+    url = "https://api.ipify.org/?format=json"  # 定义查询 API 的 URL
+    try:
+        response = urllib.request.urlopen(url)  # 向查询 API 发送请求并获取响应
+        data = response.read()  # 读取响应中的数据(字节流)
+        data = data.decode("utf-8")  # 将响应数据从字节流转换为字符串
+        data = json.loads(data)  # 将响应数据解析为 JSON 格式
+        public_ip = data["ip"]  # 从 JSON 数据中提取公网IP地址
+        loggerKit.info(f"公网出口IP地址:{public_ip}")
+        return public_ip
+    except Exception as ex:
+        err_msg = "无法获取公网出口IP地址"  # 查询失败时输出提示信息
+        loggerKit.error(f'err_msg: {err_msg}')
 
 
 if __name__ == "__main__":
@@ -282,7 +293,7 @@ if __name__ == "__main__":
     # 每天早上8点30开始执行
     # run_daily_task(8, 30, 1, 100)
     # 打印本机网络出口IP
-    # external_ip = get_external_ip()
-    # print(f"本机网络出口 IP 地址:", external_ip)
+    external_ip = get_external_ip()
+    print(f"本机网络出口 IP 地址:", external_ip)
     # IP代理池一次性存储到redis
-    save_all_proxy_ip(100, 9)
+    # save_all_proxy_ip(100, 9)