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