我很讨厌投票,别人叫我帮忙投票,我都懒得去投,公司的各种投票我一般都是装作看不到。

但是今天这个不一样,今天是我们的一个社团要投票,前些天社团的领导送给我一台旧的洗衣机,的确帮了我很大的忙,为了表示感谢,我我去研究了一下怎么帮他在评比中刷票。

因为涉及隐私我就不截图了。刚开始投票都是在微信群里发的,我正好电脑挂着微信,用浏览器打开,打开抓包工具,投了一票,抓数据包看了一下。卧槽传了十几个参数,其中还有我的微信ID,还有时间戳,然后还有几个参数没搞明白是什么,没有IP。

于是先尝试写个脚本,修改一下微信ID和时间戳,看看能不能投票成功,悲剧的是没有投票成功。

这时候我再想想,如果不带微信ID能不能投票成功,于是开了个IE浏览器,把连接复制上去,投票的时候抓个数据包看看,竟然能投票成功了。所以这个投票还是有漏洞的,没有绑定微信也能投票成功。关闭了浏览器后重新打开连接投票时提示已投了,猜想可能跟缓存cookie有关,于是清除所有缓存,继续投票OK了。

明白了这个套路,原来只是绑定cookie而已,于是拿起python写了脚本去投票,发现还是投不成功,蛋疼,因为还有几个随机参数我不知道怎么去造。

这时候想起之前用的selenium,每次打开不都是一个全新的浏览器吗?好的,那就用selenium去写。写好放服务器上去跑,效率是挺低的,一分钟只能投三票,浏览器加载实在是太慢了,不过想想慢一点也蛮好的,免得刷票太明显了。

晚上脚本挂服务器,第二天早上起来,卧槽比第二名足足多了快两千票,吓得我赶紧关了。不过也能保证获奖了。

所以为什么我这么讨厌这种投票的活动,最后都会变成刷票了,还有频繁的要朋友帮忙投票,也会欠下很多人情。

附录脚本:

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, reclass Case4(unittest.TestCase):def setUp(self):self.verificationErrors = []self.accept_next_alert = Truedef test_case4(self):while True:try:self.driver = webdriver.Firefox()driver=self.driverdriver.implicitly_wait(5)driver.get("http://xxx.com")driver.maximize_window()#滚动条拉到底部js="var q=document.documentElement.scrollTop=10000"driver.execute_script(js)driver.find_element_by_xpath("/html/body/div[2]/div[46]/div[4]").click()driver.find_element_by_xpath("//div[@class='pageTwo page']").click()driver.find_element_by_xpath("/html/body/div[2]/div[47]/div[3]/div[2]/div[4]/div[3]/div[1]/div[1]").click()driver.find_element_by_xpath("//div[@class='pageThree page']").click()driver.find_element_by_xpath("/html/body/div[2]/div[47]/div[3]/div[3]/div[8]/div[3]/div[1]/div[1]").click()driver.find_element_by_xpath("//div[@class='pagefour page']").click()driver.find_element_by_xpath("/html/body/div[2]/div[47]/div[3]/div[4]/div[3]/div[3]/div[1]/div[1]").click()driver.find_element_by_xpath("//div[@class='pagefive page']").click()driver.find_element_by_xpath("/html/body/div[2]/div[47]/div[3]/div[5]/div[4]/div[3]/div[1]/div[1]").click()driver.quit()except:driver.quit()print "error"def is_element_present(self, how, what):try: self.driver.find_element(by=how, value=what)except NoSuchElementException, e: return Falsereturn Truedef is_alert_present(self):try: self.driver.switch_to_alert()except NoAlertPresentException, e: return Falsereturn Truedef close_alert_and_get_its_text(self):try:alert = self.driver.switch_to_alert()alert_text = alert.textif self.accept_next_alert:alert.accept()else:alert.dismiss()return alert_textfinally: self.accept_next_alert = Truedef tearDown(self):self.driver.quit()self.assertEqual([], self.verificationErrors)if __name__ == "__main__":unittest.main()

也可以用python的requests中session的方法,进行持续连接

import requests
import json
import randomdef vote(usragent):session = requests.Session()r = session.get("http://xxx.com/?app_act=detail&id=16&from=timeline&isappinstalled=0")headers = {"Accept": "*/*","If-Modified-Since": '0',"Referer": "http://xxx.com/?app_act=detail&id=16&from=timeline&isappinstalled=0","Accept-Language": "zh-CN","Accept-Encoding": "gzip, deflate","User-Agent": usragent,}r1 = session.get("http://xxx.com/?app_ajax=1&app_act=vote&id=16&itemid=1",headers = headers,cookies=r.cookies)r2 = session.get("http://xxx.com/?app_ajax=1&app_act=vote&id=16&itemid=1",headers = headers,cookies=r.cookies)json1 = json.loads(r1.text)json2 = json.loads(r2.text)if json1['code'] == json2['code'] and json1['code'] == 0:print "Vote Success!"return 2else:print "Vote Fail!"return 0if __name__ == "__main__":number = raw_input("Please enter the number of votes")agent = []with open("agent.txt","r") as f:lines = f.readlines()for line in lines:agent.append(line.strip('\n'))total = 0for i in range(0,int(number)):total += vote(agent[random.randint(0,len(agent))])print "A total of [%s] votes"%total

记一次刷票过程的感想相关推荐

  1. bugfree安装中mysql未安装_记第一次安装bugfree过程,几经曲折,倒在了BUGfree 环境检查的MySQL未安装的地方,求助...

    记第一次安装bugfree过程,几经曲折,倒在了BUGfree 环境检查的MySQL未安装的地方,求助 1.准备工作,下载Xampp && bugfree Xampp http://s ...

  2. 记第一次参加招聘会的过程和感想

    又有另一场的校园招聘会,好像是什么厦门的正航软件,好像还挺出名的,不过自己真的是没听说过.考虑到自己已经错过了之前的那一次,这一次说什么也不能给错过. 早上接近10点得时候,来到了教学楼的大教室(这个 ...

  3. 记一次面试过程中的Python编程题

    这几天面试过程中遇到一道Python编程题,题目如下: 面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字 ...

  4. 关于网络渗透的过程以及感想记录

    12.28 这个网站是我很早之前就想攻下的,经历大概如下: 1.想借着ctf的劲头去看看此网站,但是失败,原因是,ctf跟实战完全是两码子事儿啊!此网站的情况比较复杂,大部分是静态页面也就是html, ...

  5. 记MFC俄罗斯方块制作过程

    经过几天努力,终于做好了我的俄罗斯方块,这是我用MFC做的第一个游戏,也是第一个像样的东西.下面都是个人感受,也不知道对不对,不对的话大家不要笑我哦,希望能帮我指出错误来. 感觉做这个游戏需要先理解M ...

  6. 记linux_centOS安装as86过程

    /** * as86: assembler for 8086..80386 processors * */ step1: 寻找资源包.搜索地址如下:http://rpmfind.net/linux/r ...

  7. linux as86,记linux_centOS安装as86过程

    /** * as86: assembler for 8086..80386 processors * */ step1: 寻找资源包.搜索地址如下:http://rpmfind.net/linux/r ...

  8. 记Bugly崩溃查找过程unity-il2cpp

    2019独角兽企业重金招聘Python工程师标准>>> Bugly上面的崩溃,刚打开根本看不懂什么函数地什么堆栈 1...一开始想到的是把il2cpp的代码生成符号文件,上传到bug ...

  9. 记一次CTF过程(Writeup)

    前言 在i春秋平台看到几个ctf练习题,就点进去看看吧,能做就做不能做说明水平有限,还要继续加油(革命尚未成功,同志仍需努力)O(∩_∩)O哈哈~ 第一题:Robot 题目名称:Robot 有没有觉得 ...

  10. 记ePub.js使用过程中的那些事

    在尝试开发web阅读器时因为需要解决epub电子书格式的解析,我选择了ePub.js(其实也没别的库可以选择) 首先是关于ePub.js使用时的一些坑 1.这个库可以解析解压好的文件和压缩过的epub ...

最新文章

  1. JavaScript有哪三部分组成?
  2. linux 编译 编解码
  3. smartform四联纸跳页问题
  4. Android自定义控件前导基础知识学习(一)——Canvas
  5. wxWidgets:wxCommandEvent类用法
  6. spark_spark连接hive config
  7. 把本地修改的Docker镜像推送到Docker hub
  8. 也读《人月神话》:没有银弹的软件工程
  9. 突发,这个国家进入紧急状态!数十年来最严重经济危机、每天停电13小时!外交部发出提醒...
  10. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
  11. python_安装PIL/pillow
  12. Ansible-playbook 学习
  13. JS保证输入框里面的数值是数字
  14. 转《js闭包与内存泄漏》
  15. oracle不完全恢复类型,Oracle——不完全恢復
  16. Android Studio第三十六期 - 模块化Activity管理Fragment
  17. ASP .Net Core系统部署到 CentOS7 64 具体方案
  18. 如何去优化一个网站做到更好
  19. 一个阿里前端工程师的成长之路
  20. try 、catch、finally用法总结

热门文章

  1. win10麦克风直接输出声音_win10系统音频前后同时有声音输出的技巧
  2. html5 css3学习资料、教程、实例收集
  3. 中美科学家造出“人-猴胚胎”,这会是魔幻剧情的开端吗?
  4. 2014腾讯校园招聘回顾
  5. Linux选择填空练习题
  6. java识别音高_如何找出音乐的音高
  7. 360浏览器调试html5,360极速浏览器开发:调试指南
  8. 未来客服会被人工智能代替吗?
  9. GeForce Experience 安装时乱码解决
  10. 凌晨四点钟深圳的风景