以极速漫画为例
这类的网站验证码使用点击旋转,来登录。
笔者提出的思路简单暴力,直接想办法获得所有正确图片,然后在登录时爬取这4张动漫图片,做旋转对比得出点击次数
查看网页数据加载可以看到在每次点击“换一组”就会加载新的图片 查看图片加载链接 http://www.1kkk.com/image3.ashx?t=1537269577000 消除多余的参数(时间戳)
- 访问 http://www.1kkk.com/image3.ashx
- 每次访问都将获得不同的图片,这些就是网站的验证码图片
- 笔者爬取http://www.1kkk.com/image3.ashx网站循环500次拿到500张大图(16张小图)
- 循环爬到500张图片
import requests
headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"}
def pic_data():
url = 'http://www.1kkk.com/image3.ashx'
for i in range(500):
response = requests.get(url, headers=headers)
filename = './image/%s' % str(i) + '.png'
with open(filename, 'wb') as f:
f.write(response.content)
print(i)
if __name__ == '__main__':
pic_data()
- 使用Image模块中的crop方法来切割图片,得到每一种头像都有一张图片
- 循环500张大图得到2000张小图(每张图切割出第一排)
from PIL import Image
y = 0
for i in range(1,500):
im = Image.open('./images/' + str(i) + '.png')
region = im.crop(( 0, 0, 76, 76))
region.save("./images/" + str(y) + '.png')
y += 1
region = im.crop((76, 0, 152, 76))
region.save("./images/" + str(y) + '.png')
y += 1
region = im.crop((152, 0, 228, 76))
region.save("./images/" + str(y) + '.png')
y += 1
region = im.crop((228, 0, 304, 76))