如何从给定字符生成无重复3位字符串并检测Instagram用户名可用性
代码存在的问题
- 字符串生成逻辑错误:
random.choices()默认每次仅抽取1个字符,且循环内变量名混淆(usr始终为空字符串),最终生成的用户名永远是1位长度,达不到3位要求 - 不满足无重复字符要求:
random.choices()是有放回抽样,可能生成重复字符的结果,且你定义的字符集漏了字母u - 可用性判断逻辑错误:Instagram 对不存在的用户名返回
404状态码而非400,直接裸请求极易触发反爬拦截,返回错误状态码 - 存在拼写错误:提示文本里的
Avilable应为Available
修正后的可运行代码
import requests import random import time from colorama import Fore # 补全缺失的u,整理完整可用字符集 CHAR_SET = "abcdefghijklmnopqrstuvwxyz1234567890" # 加常规请求头避免被直接拦截 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } while True: # 无放回抽取3个不重复字符,直接拼接成3位用户名 user = "".join(random.sample(CHAR_SET, 3)) try: response = requests.get(f"https://www.instagram.com/{user}/", headers=HEADERS, timeout=10) if response.status_code == 200: print(Fore.RED + "Taken: " + Fore.BLUE + user) elif response.status_code == 404: print(Fore.GREEN + "Available User: " + Fore.BLUE + user) else: # 遇到反爬、限流等其他状态码时提示 print(Fore.YELLOW + f"Request failed for {user}, status code: {response.status_code}") except Exception as e: print(Fore.YELLOW + f"Request error for {user}: {str(e)}") # 加随机延时降低被封概率 time.sleep(random.uniform(1, 3))
补充说明
- 高频请求依然可能触发Instagram的限流/IP封禁,若出现大量非200/404的状态码,建议暂停请求一段时间或更换IP
- 上述检测逻辑仅作技术参考,批量请求请遵守对应平台的服务条款
内容的提问来源于stack exchange,提问作者user19126561
相关产品推荐
相关产品推荐

