1. 程式人生 > >python實現的刷點選率程式碼

python實現的刷點選率程式碼

背景

同事的老爸參加微信的一個活動,需要刷點選率,因此,寫了一個程式助之。

準備

微信活動也是有真實地址的。
通過mitmproxy(man in the middle proxy)的方式,可以獲取微信獲取網頁的真實地址(url)。

完整可執行程式碼

import os
import time
import argparse
import platform

def visit_win(url, times, duration):
    import urllib2
    def _visit_win():
        try:
            s = urllib2.urlopen(url).read()
        except
urllib2.HTTPError,e: print (e.code) for i in range(times): _visit_win() print("{} Done!".format(i+1)) #do not use duration in win def visit_linux(url, times, duration): import subprocess cmd = "curl {}".format(url) for i in range(times): subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True
) print("{} Done!".format(i+1)) time.sleep(duration) def parse_input(): input_parser = argparse.ArgumentParser() input_parser.add_argument("--url",'-u', help="the url your need to visit") input_parser.add_argument("--times",'-t', type=int, default=10, help="how many times you need to visit"
) input_parser.add_argument("--duration",'-d', default=0.5, type=float, help="the duration between two visits") input_args = input_parser.parse_args() url = input_args.url times = input_args.times duration = input_args.duration return url, times, duration def main(): url, times, duration = parse_input() if platform.system().lower() == 'linux': visit_linux(url, times, duration) else: visit_win(url, times, duration) print("My evil job is finished!") if __name__ == '__main__': main()

我的說明

跨平臺

linux通過curl可以非常快速的訪問。
但是同事不懂linux,只能通過urllib庫寫個跨平臺的實現

可擴充套件性

為了增加程式的通用性,加入argparse庫,通過程式入參實現靈活應用。
**注意:
推薦使用argparse,WXCOP的很多同學還是使用老的OPTPARSE庫,argparse是用來替代OPTPARSE庫的(來自官方)**

速度

使用subprocess庫會比os.system的方式快,因為,它會fork一個程序,而os.system是阻塞(等待網頁返回很慢),速度快很多。
另外,保留了linux的curl方式,它比urllib庫要快

函式內的函式

visit_win裡還有一個只能內部使用的_visit_win
這樣可以表明這個函式的作用域

庫的匯入

沒有呆板的在開頭匯入所有需要的庫,而是根據作業系統,在需要時,才匯入特定的庫

期望大家的優化

程式碼裡留了優化空間,例如使用執行緒的方式加快urllib的訪問速度等

最後

我寫python好幾年了,有很多積累,歡迎python愛好者一起交流。