PYTHON实现刷流量工具

2023-01-31 05:01:46 python 工具 流量

转载请注明Http://blog.csdn.net/boksic 如有疑问欢迎留言

python作为网络操作很灵活的脚本语言,理应实现起来很容易,尝试了下具体的实现,url为目标地址

import urllib2
url = 'http://blog.csdn.net'
file = urllib2.urlopen(url)
content = file.read()
看来网站已经禁止了单纯测试的访问

import urllib2

def test():
    url = 'http://blog.csdn.net'
    req=urllib2.Request(url) 
    req.add_header("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; windows NT 6.1; Trident/4.0)") 
    file = urllib2.urlopen(req)
    content = file.read()
加上HTTP头,被识别为正常浏览器后可以正常访问了
同时为了测试效率把其定义为一个函数test()

用timeit模块来测试其效率

t=timeit.Timer("test()","from __main__ import test")
print t.timeit(10)/10

测试50次,平均每次0.42秒

content = file.read()这句其实在刷访问量时有请求就够了。把这句注释掉后平均每次0.26秒.


为了加快效率,尝试采用多线程的方法来请求页面,完整代码为

import urllib2
import timeit
import thread 
import time
i = 0
mylock = thread.allocate_lock()
def test(no,r):
    global i
    url = 'http://blog.csdn.net'
    for j in range(1,r):
        req=urllib2.Request(url) 
        req.add_header("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)") 
        file = urllib2.urlopen(req)
        print file.getcode();
        mylock.acquire()
        i+=1
        mylock.release()    
        print i;
    thread.exit_thread()

def fast():
        thread.start_new_thread(test,(1,50))
        thread.start_new_thread(test,(2,50)) 

fast()
time.sleep(15)

经测试,超过两个线程以上服务器就会出现503错误,所以2个线程刚好








相关文章