Instagram无效用户名页面仍返回200状态码,如何修正检测逻辑?
修正Instagram用户名存在性检测的代码
问题原因
Instagram对不存在的用户名不会返回404状态码,而是返回200并跳转到显示"Sorry, this page isn't available."的页面,因此仅通过状态码判断会失效。
解决方案
需要读取页面内容,检查是否包含用户名不存在的特征文本。以下是修正后的代码:
import urllib.request from urllib.error import HTTPError, URLError username = input('Enter username: ') url_instagram = f'https://www.instagram.com/{username}' instagram_exists = False try: with urllib.request.urlopen(url_instagram) as response: # 读取页面内容并解码为字符串 page_content = response.read().decode('utf-8') # 检查是否存在用户不存在的特征文本 if "Sorry, this page isn't available." not in page_content: instagram_exists = True except (HTTPError, URLError) as e: # 处理网络错误或非200状态码的情况 instagram_exists = False print(f"Username exists: {instagram_exists}")
代码说明
- 不再仅依赖状态码,而是读取页面实际内容进行判断
- 检测页面中是否包含Instagram用于提示用户不存在的特定文本
- 新增
URLError捕获,处理网络连接失败等异常情况 - 使用
with语句自动管理请求资源,避免资源泄漏
内容的提问来源于stack exchange,提问作者Hamza Khan
相关产品推荐
相关产品推荐

