叔叔不约---匿名聊天网 聊天图片爬虫抓取

最新跟新:由于叔叔不约规则修改,图片接口在很短时间就无法访问。404结果,本文章介绍的爬虫失效        


        在一天无聊刷贴吧的时候,偶然发现了一个叫做叔叔不约的匿名聊天网站,好奇的搜索并进入,发现该网站并不需要注册便可以随机匹配聊天对象。开始我以为聊天对象均为AI,然后测试了一波,发现可能并不是AI。经过多次测试,不同的人有不同的说话方式,不像AI作风。

    后来我发现这个网站居然可以发图片,而且图片的地址是可以获取到的,双击点击图片便跳转到了http://7xpsm9.com1.z0.glb.clouddn.com/f十二位数字?imageslim的网址上。菜鸡的我本着测试的原则,写了个爬虫来尝试直接获取自己刚才发送的图片,python代码如下:

def pachong(num):
    try:
        url = "http://7xpsm9.com1.z0.glb.clouddn.com/f" + num + "?imageslim"
        response = requests.get(url)
        image = Image.open(BytesIO(response.content))
        if(image!=None):
            #image.save('Z:/img/'+num+'.jpg')  #windows
            image.save('/home/img/'+num+'.jpg')  #linux
    except IOError:
        print "Error: fail"
    else:
        print "yes!!!yes!!!yesss"

        num传递的就是自己发送图片的数字,代码大概的意思就是用get请求的方式去向服务器索要图片,如果得到了图片那么image就不会为空,则将图片保存下来。要测试的小伙伴们可以试试:1342894147847

        接下来,我又连续发了多张测试图片。发现12位数字并没有什么规律可言。最后右键保存网页,看了一波前端代码,有这么一段:

var n = "f" + Math.round((new Date).getTime() * Math.random());
        所以图片的地址是大概由用时间戳*随机数得到的一组随机数

         于是本着更无聊的玩法,我继续写了个随机函数,随机出12位数字,给让爬虫函数不停的向服务器获取图片。  

def suiji():
    seed = "1234567890"
    sa = []
    for i in range(12):
        sa.append(random.choice(seed))
    salt = ''.join(sa)
    print salt
    return  salt

        结果可想而知,在服务器上爬虫跑了24小时,一张图片也没有获取到。我又测试了java运行相同功能,对比了运行100次python和java的速度,java大概比python快了10% 左右。java代码如下:

import java.io.ByteArrayOutputStream;
import java.io.File;  
import java.io.FileOutputStream;
import java.io.InputStream;  
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.AllPermission;
import java.util.Random;  
public class pachong {

	public static void main(String[] args) throws Exception {
		all();
	}
	public static void all() throws Exception {
		int i=0;
		while (true) {
			i++;
			pachong(createData(12));
			System.out.println(i);
		}
	}
	
	 //根据指定长度生成纯数字的随机数
    public static String createData(int length) {
        StringBuilder sb=new StringBuilder();
        Random rand=new Random();
        for(int i=0;i

        java和python都没有把带宽吃完,这是不能忍的,本着一条路走到底的原则,继续使用python来爬。服务器使用centos7+ 系统,其中华为云的centos7.3死活装不进去PIL,换centos7.2后安装正常。后台运行python并且保留输出结果的命令为nohup python 文件名.py &  输出会保留在nohup.out文件中,带宽吃不满没关系,在不同的路径下多运行几个爬虫就行了。使用 top 命令可以看服务器资源占用情况。如果用的是阿里云或者腾讯云可以在网页的控制台查看带宽占用,但是华为没有,那就自己装一个,安装使用如 http://www.osyunwei.com/archives/1211.html 所示。

         在本人的测试中,发现1和7开头的12位数字居多,于是采用每次加一的方式去爬图片,得到图片的速度明显比之前的随缘算法来的快。其实也就一天几张图,对叔叔不约储存图片的七牛云这样规模连续的访问并没有遭到限速之类的限制,依然能够顺利的得到图片,但是每个服务器每天的流量是却都有几个G,活脱脱像流量攻击。

         12位随机数的接口对于一般人的加密来说是足够,但是对于图片一直在增加的匿名聊天网站可能是完全不够的。我无法获取某一个人聊天的图片,但是能随机获取。在得到的图片中有很多少儿不宜的图片

        以下为漂亮小姐姐及风景系列,福利没有。真的没有

叔叔不约---匿名聊天网 聊天图片爬虫抓取_第1张图片叔叔不约---匿名聊天网 聊天图片爬虫抓取_第2张图片叔叔不约---匿名聊天网 聊天图片爬虫抓取_第3张图片叔叔不约---匿名聊天网 聊天图片爬虫抓取_第4张图片叔叔不约---匿名聊天网 聊天图片爬虫抓取_第5张图片


# -*- coding: utf-8 -*-

import requests
from PIL import Image
from io import BytesIO
import random

def pachong(num):
    try:
        url = "http://7xpsm9.com1.z0.glb.clouddn.com/f" + num + "?imageslim"
        response = requests.get(url)
        image = Image.open(BytesIO(response.content))
        #print image
        if(image!=None):
            #image.save('Z:/img/'+num+'.jpg')  #windows
            image.save('/home/img/'+num+'.jpg')  #linux
    except IOError:
        print "Error: fail"
    else:
        print "yes!!!yes!!!yesss"

def suiji():
    seed = "1234567890"
    sa = []
    for i in range(12):
        sa.append(random.choice(seed))
    salt = ''.join(sa)
    print salt
    return  salt

def all():
    i=0
    while(i<10):
        pachong(suiji())

if __name__ == "__main__":
    all()

你可能感兴趣的:(叔叔不约---匿名聊天网 聊天图片爬虫抓取)