Python可以做哪些好玩的事之自動刷票

目標(biāo)網(wǎng)站:http://best.zhaopin.com/?sid=121128100&site=sou

1.分析

  • 先手動投票查看網(wǎng)頁提交的請求
點(diǎn)擊投票網(wǎng)頁提交的請求
投票成功返回的json數(shù)據(jù)坦仍,可以看到是result:1
為公司投票時提交的參數(shù)

點(diǎn)擊'為我點(diǎn)贊'網(wǎng)頁提交的請求
點(diǎn)贊時提交的參數(shù)

通過分析可以看到網(wǎng)頁實(shí)際上并沒有針對同一IP的投票進(jìn)行限制,所以不需要進(jìn)行使用代理IP曙砂,但是為了使我們的代碼更加符合常規(guī)網(wǎng)站的對同一IP限制投票的機(jī)制斯碌,所以這里抓取一個代理IP的網(wǎng)站進(jìn)行點(diǎn)擊投票

提供不錯幾個的短期代理IP網(wǎng)站

但是不翩,這些免費(fèi)開放代理一般會有很多人都在使用,而且代理有壽命短啡捶,速度慢利凑,匿名度不高卸勺,HTTP/HTTPS支持不穩(wěn)定等缺點(diǎn)(免費(fèi)沒好貨)砂沛。

查看網(wǎng)頁結(jié)構(gòu)每一個代理IP和端口都在一個<td></td>標(biāo)簽中,我們可以通過正則篩選出我們想要的結(jié)果

2.小試牛刀(代碼基于Python 2.7)

#-*- coding:utf-8 -*-

import requests
import json
import re
import random
import sys
import time
import datetime  #處理日期和時間的標(biāo)準(zhǔn)庫
import threading  #引入多線程
from random import choice  #choice() 方法返回一個列表曙求,元組或字符串的隨機(jī)項(xiàng)
from bs4 import BeautifulSoup
from fake_useragent import UserAgent #引入userAgent


def get_ip():
    '''獲取代理IP'''
    url = 'http://www.xicidaili.com/nn'
    my_headers = {
        'Accept': 'text/html, application/xhtml+xml, application/xml;',
        'Accept-Encoding': 'gzip, deflate, sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Referer': 'http: // www.xicidaili.com/nn',
        'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 45.0.2454.101Safari / 537.36'
    }
    r = requests.get(url,headers=my_headers)
    soup = BeautifulSoup(r.text,'html.parser')
    data = soup.find_all('td')

    #定義IP和端口Pattern規(guī)則
    ip_compile = re.compile(r'<td>(\d+\.\d+\.\d+\.\d+)</td>')  #匹配IP
    port_compile = re.compile(r'<td>(\d+)</td>')  #匹配端口
    ip = re.findall(ip_compile,str(data))    #獲取所有IP
    port = re.findall(port_compile,str(data))  #獲取所有端口
    z = [':'.join(i) for i in zip(ip,port)]  #列表生成式
    print z
    #組合IP和端口
    return z

# 設(shè)置user-agent列表,每次請求時碍庵,隨機(jī)挑選一個user-agent
ua_list = UserAgent()
print ua_list.random

def get_url(url,code=0,ips=[]):
    '''
    投票
    如果因?yàn)榇鞩P已失效造成投票失敗,則會自動換一個代理IP后繼續(xù)投票
    :param code:
    :param ips:
    :return:
    '''
    try:
        ip = choice(ips)
    except:
        return False

    else:
        #指定IP
        proxies = {
            'http':ip
        }
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Host': 'best.zhaopin.com',
            'Origin': 'https: // best.zhaopin.com',
            'Referer':'https//best.zhaopin.com/?sid=121128100&site=sou',
            # 'User-Agent':choice(ua_list)
            'User-Agent': ua_list.random
        }
        print ua_list.random

    try:
        data = {"bestid": "3713", "score": "5,5,5,5,5,5","source": "best",}

        result = requests.post(url=url,data=data, proxies=proxies,)  # 跳過證書的驗(yàn)證 verify=False
    except requests.exceptions.ConnectionError:
        print 'ConnectionError'
        if not ips:
            print 'ip 已失效'
            sys.exit()
        #刪除不可用的代理IP
        if ip in ips:
            ips.remove(ip)
        #重新請求url
        get_url(url,code=0,ips=[])
    else:
        date = datetime.datetime.now().strftime('%H:%M:%S')
        # result.text() 投票成功顯示1  失敗顯示0
        print u"第%s次 [%s] [%s]:投票%s (剩余可用代理IP數(shù):%s)" % (code, date, ip, result.text, len(ips))

def get_num(num):
    #點(diǎn)贊的請求
    url1 = 'https://best.zhaopin.com/API/Vote.ashx'
    #投票的請求
    url2 = 'https://best.zhaopin.com/API/ScoreCompany.ashx'
    if num == 1:
        url=url1
        main(url)
    elif num == 2:
        url =url2
        main(url)
    else:
        print '您的輸入有誤悟狱,請重新輸入>苍 !挤渐!'
        num = int(raw_input('自主刷贊請選1苹享,自動投票請選2:'))
        get_num(num)


def main(url):
    ips = []
    #xrange() 生成的是一個生成器
    for i in xrange(6000):
        # 每隔1000次重新獲取一次最新的代理IP,每次可獲取最新的100個代理IP
        if i % 1000 == 0:
            ips.extend(get_ip())
            print '--------------------------------------'
            print ips
        #啟動線程浴麻,每隔1s產(chǎn)生一個線程得问,可通過控制時間加快投票速度
        t1 = threading.Thread(target=get_url,args=(url,i,ips))
        t1.start()
        time.sleep(1)  #time.sleep的最小單位是毫秒




if __name__ == '__main__':
    # #點(diǎn)贊的請求
    # url1 = 'https://best.zhaopin.com/API/Vote.ashx'
    # #投票的請求
    # url2 = 'https://best.zhaopin.com/API/ScoreCompany.ashx'
    print '歡迎使用自助刷票小工具QAQ'
    num = int(raw_input('自主刷贊請選1,自動投票請選2:'))
    get_num(num)

  • 運(yùn)行程序
開啟程序软免,可以看到每次投票的IP已不再是我們本機(jī)IP
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宫纬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膏萧,更是在濱河造成了極大的恐慌漓骚,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榛泛,死亡現(xiàn)場離奇詭異蝌蹂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挟鸠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門叉信,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亩冬,“玉大人艘希,你說我怎么就攤上這事硼身。” “怎么了覆享?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵佳遂,是天一觀的道長。 經(jīng)常有香客問我撒顿,道長丑罪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任凤壁,我火速辦了婚禮吩屹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拧抖。我一直安慰自己煤搜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布唧席。 她就那樣靜靜地躺著擦盾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淌哟。 梳的紋絲不亂的頭發(fā)上迹卢,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音徒仓,去河邊找鬼腐碱。 笑死,一個胖子當(dāng)著我的面吹牛掉弛,可吹牛的內(nèi)容都是我干的喻杈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狰晚,長吁一口氣:“原來是場噩夢啊……” “哼筒饰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起壁晒,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瓷们,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秒咐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谬晕,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年携取,在試婚紗的時候發(fā)現(xiàn)自己被綠了攒钳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雷滋,死狀恐怖不撑,靈堂內(nèi)的尸體忽然破棺而出文兢,到底是詐尸還是另有隱情,我是刑警寧澤焕檬,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布姆坚,位于F島的核電站,受9級特大地震影響实愚,放射性物質(zhì)發(fā)生泄漏兼呵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一腊敲、第九天 我趴在偏房一處隱蔽的房頂上張望击喂。 院中可真熱鬧,春花似錦碰辅、人聲如沸茫负。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忍法。三九已至,卻和暖如春榕吼,著一層夾襖步出監(jiān)牢的瞬間饿序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工羹蚣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留原探,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓顽素,卻偏偏與公主長得像咽弦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胁出,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前言 現(xiàn)在部分比賽為了推廣贊助商或者比賽本身型型,需要參賽隊(duì)伍進(jìn)行網(wǎng)上拉票,甚至票數(shù)還會占一定比例的成績全蝶。因此闹蒜,刷票也...
    lan_ha閱讀 9,554評論 1 18
  • 他旅行他回來 他經(jīng)識了廢墟的暈眩 駝鈴的寂寞 帳下寒冷的醒寤 同情中斷了的辛辣 ——福...
    南山雷藏閱讀 389評論 0 1
  • 慶幸绷落,我沒有在自己心智不成熟的時候,選擇婚姻始苇。
    Tammymomoo閱讀 221評論 0 0
  • 立春裁來桃花夭砌烁,簪卿鬢角卿勝嬌。 雨水紙傘畫美人催式,與卿步下煙雨橋函喉。 驚蟄仔細(xì)剪艾蒿避归,配卿香囊聽蟬躁。 春分花期已過...
    當(dāng)初不該下凡閱讀 542評論 0 3