必须有以下几个漏洞能够实现该功能:
1.验证码是假的,有图片,但是实际输入的验证码与图片无关;否则的话必须要用到python的图象辨识的模块
2.注册时不需要邮箱验证,所以注册填写的邮箱地址是任意的,只要符合邮箱输入栏的正则表达式就可以了。(相当于在对方服务器的数据库添加了一堆没用的邮箱帐号)
所以这个东西很局限(正常的网站都不会有这种漏洞)网页点赞,只能用于爬虫的相关学习。
安装requests模块
首先,你须要对网站发出恳求,所以你须要安装python的requests模块。
在MacOS的系统下,如果你早已安装了python的pip工具,那么只须要在控制命令行中输入:
$pip3 install requests
这边用pip3是因为给系统上面的python3.X安装这个模块
就会手动安装。
若没有pip,则先用easy-install安装pip:
$easy-install pip3
还有几个用于爬虫的模块,例如beautifulsoup ,urllib等等。
在windows环境下,如果安装了pip工具应当也是一样的方式。
进行剖析
1.分析注册传递的数据
如果安装完了requests模块的话,接下来就可以进行对这个注册登入的操作进行剖析,但是这儿推荐使用goole的浏览器chrome。
打开注册地址,右击——>检查,选择network(网络),如果里面有东西先去除掉:
WX20170603-230646@2x.png
然后输入一个测试的邮箱,随便输入一个验证码:
WX20170603-231118@2x.png
点击下一步,观察network上面的数据:
WX20170603-231226@2x.png
正常来说应给是第一个,发现恳求方法是POST,说明是有向服务器上传数据的,然后往下拉,找到form data:
WX20170603-231234@2x.png
这上面就很清楚了,里面上传的是刚才我们输入的帐号和密码,还有其他的一些东西,先把它保存出来,待会须要模拟上传数据。
接下来是这个输入密码的界面了:
WX20170603-231541@2x.png
我们试一下输入1234(要两次都一样,有的网站是须要大小写字母之类的,取决于上面的正则表达式),再次把network清空,点击完成注册:
WX20170603-231743@2x.png
找到第一个POST包的form data:
WX20170603-231829@2x.png
发现这上面就是刚才输入的密码(其实一些比较好一点的网站就会有加密的,所以正常是看不出真正的密码的,例如qq空间登陆时传递密码的data是经过加密处理的)。
到这一步的话,就早已成功一小半了,基本可以实现注册和登陆了(虽然没有演示登陆,但是是一样的,只不过传递的form data上面是帐号密码和其他一些东西而已)。
2.分析点赞的时侯传递的数据
找到一个东西如下:
WX20170603-232955@2x.png
点击星星,找到network上面发送的数据包:
WX20170603-233238@2x.png
我们不难发觉,它是通过向Requset URL
post了一个数据包form data,里面有一个productld:4557。
这里的4557有可能是商品的代码。
然后再找到另一个商品,再次点赞,分析,发现确实是商品的一个代码。
OK网页点赞,做到这儿,我们早已剖析完毕了,已经找到须要post的所有数据包了,那么接下来就开始码代码实现模拟这个过程了。
代码实现
import requests
import random
times = 0 # 计次
number = input('请输入须要点赞的次数:')
item_code = input('请输入商品的代码:')
for i in range(1, int(number)):
a = random.randint(1, 99999999999) # 随机生成邮箱中的数组
username = '100456456002' + str(a) + '@163.com' # 随机生成邮箱
Session = requests.session() # 生成一个新的会话窗口
url_register1 = '#39; # 注册页面(账号)
data_username = {
'param': '',
'registerType': 2,
'system': 'mRegister',
'customer.username': username,
'randomCode': '1234',
'smscn': ''} # post帐号表单,以及虚假的验证码
url_register2 = '#39; # 注册页面(密码)
data_password = {
'userCardNo': '',
'password': '1111',
'passwordConfirm': '1111'} # post密码表单
Session.post(url=url_register1, data=data_username) # 模拟输入帐号并步入下一个页面
Session.post(url=url_register2, data=data_password)
# 模拟输入密码并注册
Session.post('#39;,
data={'productId': item_code}) # 该出4558为作品编号
times += 1
print('已经点赞%d次' % times)
这样就实现了简单的一个操作,但是几乎所有的网站都不可能让我们这样做,所以并没有哪些价值,只能拿来学习一下。大部分原理都差不多,只不过是复杂程度不同而已,例如进行校园网登陆的时侯须要使用的 lt 这个表单数据,而这个数据是随机的,你须要在登陆页面的源码上面找到这个东西能够实现登陆。