newsreport_agent_for_traffic/check_ip.py

148 lines
3.9 KiB
Python
Raw Normal View History

2026-05-09 10:46:52 +08:00
"""
检查当前IP地址的工具脚本
用于微信公众平台IP白名单配置
"""
import requests
def get_public_ip():
"""获取当前公网IP地址"""
print("正在获取当前公网IP地址...\n")
# 尝试多个IP查询服务
services = [
("https://api.ipify.org?format=json", "ip"),
("https://ipinfo.io/json", "ip"),
("https://api.ip.sb/ip", None),
]
for url, key in services:
try:
response = requests.get(url, timeout=5)
if response.status_code == 200:
if key:
data = response.json()
ip = data.get(key)
else:
ip = response.text.strip()
print(f"✓ 当前公网IP: {ip}")
print(f" (来源: {url})")
return ip
except Exception as e:
print(f"✗ 查询失败 ({url}): {e}")
continue
print("\n所有IP查询服务都失败了请手动访问以下网站查看IP:")
print(" - https://www.ip.cn/")
print(" - https://ipinfo.io/")
return None
def check_ip_format(ip):
"""检查IP格式是否正确"""
if not ip:
return False
parts = ip.split('.')
if len(parts) != 4:
return False
try:
for part in parts:
num = int(part)
if num < 0 or num > 255:
return False
return True
except ValueError:
return False
def is_private_ip(ip):
"""检查是否为内网IP"""
if not ip:
return False
parts = [int(p) for p in ip.split('.')]
# 检查常见内网IP段
if parts[0] == 10:
return True
if parts[0] == 172 and 16 <= parts[1] <= 31:
return True
if parts[0] == 192 and parts[1] == 168:
return True
if parts[0] == 127:
return True
return False
def main():
"""主函数"""
print("="*60)
print("微信公众平台IP白名单配置工具")
print("="*60)
# 获取公网IP
ip = get_public_ip()
if ip:
print(f"\n{'='*60}")
print("IP地址检查")
print(f"{'='*60}")
# 检查IP格式
if check_ip_format(ip):
print(f"✓ IP格式正确: {ip}")
else:
print(f"✗ IP格式错误: {ip}")
return
# 检查是否为内网IP
if is_private_ip(ip):
print(f"✗ 警告: 这是一个内网IP地址!")
print(f" 内网IP无法添加到微信公众平台白名单")
print(f" 请确保你使用的是公网IP")
else:
print(f"✓ 这是一个公网IP地址")
# 提供配置指导
print(f"\n{'='*60}")
print("配置步骤")
print(f"{'='*60}")
print(f"\n1. 登录微信公众平台: https://mp.weixin.qq.com/")
print(f"2. 进入: 设置与开发 > 基本配置")
print(f"3. 找到: IP白名单")
print(f"4. 点击: 修改")
print(f"5. 添加IP: {ip}")
print(f"6. 保存设置")
print(f"\n{'='*60}")
print("注意事项")
print(f"{'='*60}")
print(f"- 最多可以添加10个IP地址")
print(f"- 如果IP经常变化可以添加IP段如: {'.'.join(ip.split('.')[:3])}.0/24")
print(f"- 修改后立即生效,无需等待")
print(f"- 配置完成后,重新运行爬虫脚本测试")
print(f"\n{'='*60}")
print("测试命令")
print(f"{'='*60}")
print(f"python crawler/wechat_crawler.py")
print(f"python crawler/baidu_map_crawler.py")
else:
print("\n无法自动获取IP地址请手动查询:")
print("1. 访问 https://www.ip.cn/")
print("2. 或访问 https://ipinfo.io/")
print("3. 将显示的IP地址添加到微信公众平台白名单")
print(f"\n{'='*60}")
print("完成!")
print(f"{'='*60}")
if __name__ == "__main__":
main()