刷票:微信刷票和小程序刷票如何实现安全?

投票网站一般而言主要鉴别方式是IP地址,当然也有微信的(openid),微信的方式基本无法投票,只能通过多个微信号方式。本文以普通的投票网站展开,鉴别ip的方式主要有三种,见如下代码:
对于匿名代理而言主要涉及三步,获取代理ip,验证代理ip,建立ip池,使用代理方式发起http请求。
1 获取代理ip的获取和验证
这里通过国内免费的匿名代理ip网站获取测试代理。但是经过测试代理的质量一般,基本上只有20%的左右的可用性。建议寻找收费的代理ip,而且提供可靠的api接入方式。
代理ip的获取方式很多,但都是大同小异,基本上是通过爬取代理网站的ip然后转存到数据库中,通过另外一个程序对数据中的代理ip进行验证,删除不能正常代理的,筛选出的ip作为后续使用。我使用的是github的python脚本,
2 建立代理ip池
这里的ip池是为后续程序自动请求提供代理,所以代理需要可靠,否则会导致程序投票的效率很低。这里需要将数据库中筛选的ip以一定格式写入文件中。
import pymysql
def handle_http():
conn = pymysql.connect(host='localhost',
user='root',
passwd='12345678',
db='proxypool',
port=3306,
charset='utf8')
cursor = conn.cursor()
cursor.execute('select ip,ip_port from proxypool')
ip_list = []
fp = open("./ip.txt",'w')
for row in cursor.fetchall():
fp.writelines(row[0]+":"+row[1]+"\n")
fp.close()
# content = random.choice(ip_list)
return ip_list
if __name__ == '__main__':
handle_http()
3 使用代理发起http请求
#coding:utf-8
import urllib2,urllib,time,socket,random,Proxy_ip,Useragent
def Visitpage(proxyip,url):
socket.setdefaulttimeout(6)
proxy_support = urllib2.ProxyHandler({'http':proxyip})
user_agent = random.choice(Useragent.user_agents)
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
try:
request = urllib2.Request(url)
print 1+request
request.add_header('Referer','http://www.baidu.com')
request.add_header('User-Agent',user_agent)
html = urllib2.urlopen(request).read()
print(html)
time.sleep(random.randint(60,180))
except urllib2.URLError,e:
print 'URLError! The bad proxy is %s' %proxyip
except urllib2.HTTPError,e:
print 'HTTPError! The bad proxy is %s' %proxyip
except:
print 'Unknown Errors! The bad proxy is %s ' %proxyip
def Clicklikebutton(proxyip,url,data):
socket.setdefaulttimeout(6)
proxy_support = urllib2.ProxyHandler({'http':proxyip})
user_agent = random.choice(Useragent.user_agents)
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
try:
request = urllib2.Request(url)
request.add_header('Referer','http://www.baidu.com')
request.add_header('User-Agent',user_agent)
data = urllib.urlencode(data)
resp = opener.open(request, data)
print resp.read()
time.sleep(random.randint(60,180))
except urllib2.URLError,e:
print 'URLError! The bad proxy is %s' %proxyip
except urllib2.HTTPError,e:
print 'HTTPError! The bad proxy is %s' %proxyip
except:
print 'Unknown Errors! The bad proxy is %s ' %proxyip
def main():
for i in range(len(Proxy_ip.iplist)):
proxyip = Proxy_ip.iplist[i]
i += 1
print proxyip
for m in range(random.randint(2,4)):
#Visitpage(proxyip,'http://xxx')
Clicklikebutton(proxyip,'http://152.136.57.219/vote_ip_final/submit2',{'temxx':1})
if __name__ == "__main__":
main()
4 验证
经过验证,可以正常完成投票,建议将每次投票的间隔调整好,否则容易被认定非正常投票。
小程序投票的话,同微一样的情况。需要使用很多的微号来操作。

相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~