如何在Python代码中添加线程?

2024-09-30 22:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我尝试创建一个带有代理的用户名可用性检查器,目前为止它可以正常工作 唯一的问题是它很慢,我尝试实现线程,但没有什么不同,因为我不确定我是否做得对。 使用concurrent.futures和线程库

有没有更好的方法来编写此类程序,或者有其他建议? 提前谢谢

import requests
import json
import ctypes
import colorama
from colorama import Fore
from datetime import datetime
import os

os.system("cls")
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
colorama.init()
url = "https://link"

def grab_proxies():
    proxylist = []
    prx = open('proxy.txt','r')
    prx = prx.readlines()
    for proxy in prx:
        proxy = proxy.rstrip("\n")
        proxylist.append(proxy)
    return proxylist
prlist = grab_proxies()

def grab_usernames():
    userlist = []
    users = open('userlist.txt','r')
    users = users.readlines()
    for user in users:
        user = user.rstrip("\n")
        userlist.append(user)
    return userlist
ulist = grab_usernames()


found = 0
pc = 0
uc = 0
for i in range(0,len(prlist)):
    ctypes.windll.kernel32.SetConsoleTitleW(f"[# Checker] | Counter: %s - Found: %s - Current Proxy: %s - Started at: %s" % (i, found, prlist[pc], current_time))
    try:
        req = requests.post(url,headers=headers, data = {"requested_username": ulist[uc], "xsrf_token": "F0kpyvjJgeBtsOk5Gl6Jvg"},proxies={'http' : prlist[pc],'https': prlist[pc]}, timeout=2)
        response = req.json()
        #print(response,req.status_code)
        #print(response)
        #print(type(response))
        if(response['reference']['status_code'] == 'TAKEN'):
            #rd = response['errors']['username'][0]['code']
            print(f'{Fore.LIGHTBLACK_EX}[{Fore.LIGHTRED_EX}Taken{Fore.LIGHTBLACK_EX}]{Fore.LIGHTCYAN_EX} {ulist[uc]}')
            #print(ulist[uc]+" Taken")
            uc+=1
        elif(response['reference']['status_code'] == 'OK'):
            print(f'{Fore.LIGHTBLACK_EX}[{Fore.LIGHTGREEN_EX}Available{Fore.LIGHTBLACK_EX}]{Fore.LIGHTCYAN_EX} {ulist[uc]}')
                #print(ulist[uc]+" Available")
            f = open("found.txt","a")
            f.write(ulist[uc]+"\n")
            f.close()
            found+=1
            uc+=1
        elif(response['reference']['status_code'] == 'INVALID_BEGIN'):
            print(f'{Fore.LIGHTBLACK_EX}[{Fore.LIGHTRED_EX}Invalid Username{Fore.LIGHTBLACK_EX}]{Fore.LIGHTCYAN_EX} {ulist[uc]}')
            uc+=1
        elif(response['reference']['status_code'] == 'DELETED'):
            print(f'{Fore.LIGHTBLACK_EX}[{Fore.LIGHTRED_EX}Deleted{Fore.LIGHTBLACK_EX}]{Fore.LIGHTCYAN_EX} {ulist[uc]}')
            uc+=1
        else:
            print(response)
    except:
        #print(prlist[pc]+ " Going to next proxy")
        pc+=1
        pass
#break

x = input("Finished!.. press enter to exit")

Tags: importresponsestatuscodeexproxyprintgrab