newsreport_agent_for_traffic/check_ip.py

148 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
检查当前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()