最新跟新:由于叔叔不约规则修改,图片接口在很短时间就无法访问。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')  #windowsimage.save('/home/img/'+num+'.jpg')  #linuxexcept 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 saltreturn  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<length;i++){sb.append(rand.nextInt(10));}String data=sb.toString();System.out.println(data);return data;}public static void pachong(String num) throws Exception {//new一个URL对象  URL url = new URL("http://7xpsm9.com1.z0.glb.clouddn.com/f"+num+"?imageslim");  //打开链接  HttpURLConnection conn = (HttpURLConnection)url.openConnection();  //设置请求方式为"GET"  conn.setRequestMethod("GET");  //超时响应时间为5秒  conn.setConnectTimeout(5 * 1000);  //通过输入流获取图片数据  try {InputStream inStream = conn.getInputStream(); if(inStream!=null) {//得到图片的二进制数据,以二进制封装得到数据,具有通用性  byte[] data = readInputStream(inStream);  //new一个文件对象用来保存图片,默认保存当前工程根目录  File imageFile = new File(num+".jpg");  //创建输出流  FileOutputStream outStream = new FileOutputStream(imageFile);  //写入数据  outStream.write(data);  //关闭输出流  outStream.close(); }} catch (Exception e) {System.out.println("没图");}}public static byte[] readInputStream(InputStream inStream) throws Exception{  ByteArrayOutputStream outStream = new ByteArrayOutputStream();  //创建一个Buffer字符串  byte[] buffer = new byte[1024];  //每次读取的字符串长度,如果为-1,代表全部读取完毕  int len = 0;  //使用一个输入流从buffer里把数据读取出来  while( (len=inStream.read(buffer)) != -1 ){  //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度  outStream.write(buffer, 0, len);  }  //关闭输入流  inStream.close();  //把outStream里的数据写入内存  return outStream.toByteArray();  }  }

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

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

# -*- coding: utf-8 -*-import requests
from PIL import Image
from io import BytesIO
import randomdef 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 imageif(image!=None):#image.save('Z:/img/'+num+'.jpg')  #windowsimage.save('/home/img/'+num+'.jpg')  #linuxexcept 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 saltreturn  saltdef all():i=0while(i<10):pachong(suiji())if __name__ == "__main__":all()

叔叔不约---匿名聊天网 聊天图片爬虫抓取相关推荐

  1. 利用python从网络上爬取图片_一篇文章教会你利用Python网络爬虫抓取王者荣耀图片...

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 王者荣耀作为当下最火的游戏之一,里面的人物信息更是惟妙惟肖,但受到 ...

  2. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  3. python爬虫网易云音乐最热评论并分析_Python3实现爬虫抓取网易云音乐的热门评论分析(图)...

    这篇文章主要给大家介绍了关于Python3实战之爬虫抓取网易云音乐热评的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. ...

  4. python抓取图片_Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

  5. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  6. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  7. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  8. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  9. python中plguba_Python量化交易进阶讲堂-爬虫抓取东方财富网股吧帖子

    欢迎大家订阅<Python实战-构建基于股票的量化交易系统>小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍.本篇专栏为小册子内容的加推篇!!! 前言 ...

  10. 【用Java爬取网页图片——爬虫爬取数据】

    用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...

最新文章

  1. android切图尺寸_安卓设计尺寸规范
  2. javaEE之------Spring-----》 AspectJ注解
  3. android 工厂方法模式应用场景,Android设计模式(四)- 工厂方法模式
  4. AMD为何要选择捆绑中国市场?
  5. 漫谈promise使用场景
  6. websocket规范 RFC6455 中文版
  7. webService学习4:客户端调用服务端的代码
  8. C++对C的一些加强和变化
  9. 【Codeforces Round #452 (Div. 2) B】Months and Years
  10. 如何设置PDFjs 页面标题
  11. 装机员PE工具(UEFI+UD双启动)+装机员系统合集(Win 7+Win 10)
  12. 自己动手打造 mini 型 QQ (一):动手实现局域网仿 QQ 互联
  13. 程序质量:代码静态检查
  14. Electron环境搭建-Mac以及URL Schemes启动
  15. 计算机设备选型的基本原则,信息系统设备选型原则.doc
  16. CVPR 2017:Interspeices Knowledge Transfer for Facial KeyPoint Detection(跨物种脸部关键点检测知识迁移)
  17. 德乐生 java_【Senior Java Developer怎么样】德乐生软件2021年Senior Java Developer前景怎么样-看准网...
  18. python自动发送短信验证码、短信通知、营销短信、语音短信
  19. 大数据Spark实战第七集 机器学习和数据处理
  20. Understand教程—使用搜索功能的几种方法

热门文章

  1. STAR法则修改简历
  2. 《精进》的读后感作文2600字
  3. 计算机操作系统试题 地址变换,计算机操作系统试题及答案汇编
  4. 电大形考作业c语言答案,题目精编国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案...
  5. 自写:二维码签到程序,功能咋能完善一些?
  6. 无监督图像分类《SCAN:Learning to Classify Images without》代码分析笔记(1):simclr
  7. 弘辽科技:拼多多新店推广的5个方法是什么?怎么推广?
  8. 简单谈谈阿里云和腾讯云的差别
  9. iOS 11 NSPhotoLibraryAddUsageDescription 错误的解决办法
  10. could not initialize proxy -the owning Session was closed解决方法