实现一个病毒扫描app——python爬取病毒样本

文章目录

  • 开篇
  • 再开篇
  • 正篇

开篇

最近闲来无事,准备做一个病毒扫描的app,那么从哪里开始呢?

首先来分析下一般的查杀步骤都有哪些

  1. 基于黑白名单的查杀

    这种是有一个庞大的数据库,里面放着各个厂商扫出来的病毒样本,里面放着病毒文件md5/病毒各种信息

    只需要将你的包名或者签名或者文件md5传进去就能辨别是不是有毒

  2. 基于特征码的扫描

    这种就是有一个病毒特征码库,通过对apk解包,深度扫描文件里是不是存在病毒

再开篇

首先我们要做个病毒库,难道要去网络上把各个厂商的病毒库都拿过来,还是要自己做一个网站等着别人来上传病毒,好像都不行,那得到猴年马月去了,今天 我们要做的就是将网络上的别人做好病毒库用python把他们爬取出来

正篇

首先我们使用的是python3,python2就不要搞事情了

首先先确定要爬取的页面

# 好吧,我就找到这一个免费的
urlprefix = 'http://www.virscan.org/reportlist'

然后我们既然做爬虫,咱就要伪装成正常用户

# 伪装成浏览器访问,适用于拒绝爬虫的网站
headers = {'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10','Referer': 'http://www.baidu.com/'}

第一步要访问这个界面

import re
import urllib.parse
import urllib.request
import bs4
import timereponse = urllib.request.Request(myurl)
html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析html
soup = bs4.BeautifulSoup(html, 'html.parser')

拿到了html之后,就可以搞事情了

对,就是要拿到这个里面的这个页数的链接

# 正则解析页面URLpattern = r'/reportlist/\w+'liResult = soup.find_all('a', href=re.compile(pattern))# 找到页面最大值maxPage = 1for link in liResult:url2 = link['href']page = url2.split('/')[-1]if maxPage < int(page):maxPage = int(page)print(maxPage)# 访问查找到urlfor x in range(1, maxPage+1):pageUrl = myurl+'/%d' % (x)# print(pageUrl)getReport(pageUrl)time.sleep(1)

通过上面的步骤我们拿到了每一页的url,下面开始访问每一页的数据了

def getReport(myurl):#print('---------getReport-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')# 查找首页所有a链接,匹配想要的URL格式(v.xxx内容)pattern = r'http://v.virscan.org/\w+'  # URL格式vLinks = soup.find_all('a', href=re.compile(pattern))for vlink in vLinks:url3 = urllib.parse.quote(vlink['href'])url3 = url3.replace('http%3A', 'http:')# print(url3)if vlink.has_attr('alt'):vn = vlink['alt']else:vn = ''# print(vn)# 只扫面和Android相关的病毒链接if 'android' in url3.lower():# 获取到病毒名称if vn == '':vn = url3.split('/')[-1][0:-5]vn = urllib.parse.unquote(vn)print('get antivirus name :'+vn)getAndroidVirusReport(url3)time.sleep(1)

通过上面的代码找到的就是它

然后点进去开始爬取详情

def getAndroidVirusReport(myurl):#print('--------getAndroidReport-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')basepageurl = urllib.parse.unquote(myurl[:-5]) + '/'# 获取详解界面pattern = 'http://v.virscan.org/'VInfoLinks = soup.find_all('a', href=re.compile(pattern))# 这里是找到页面最大值,然后for循环访问maxpagenum = 1for link in VInfoLinks:    url4 = link['href']numstr = url4.split('/')[-1][0:-5]try:if maxpagenum < int(numstr):maxpagenum = int(numstr)except:continueprint('found max page:'+ str(maxpagenum))for i in range(1, maxpagenum+1):url5 = urllib.parse.quote(basepageurl + str(i) + '.html')url5 = url5.replace('http%3A','http:')#print(url5)getAndroidVirusPage(url5)time.sleep(1)

点进去就是上面这样,病毒的文件的md5就拿到了,这时候不要要着急,还要把这个md5取出来

# 获取病毒md5值
def getAndroidVirusPage(myurl):#print('--------getAndroidVirusPage-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')# 拿到md5值pattern = r'http://md5.virscan.org/\w+'  #URL格式md5Links = soup.find_all('a', href=re.compile(pattern))for link in md5Links:    url6 = link['href']md5str = url6.split('/')[-1][0:-5]print("get file md5 :"+md5str)

好了,到此结束,我们拿到了病毒文件md5

下面还要把它存到数据库,然后客户端获取到这个数据库,然后就是各种比对找出病毒就行了

实现一个病毒扫描app——python爬取病毒样本相关推荐

  1. 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!

    哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...

  2. 用 python 爬取房价信息

    这是我们python课程要求我们制作一个项目,用python爬取结果并作数据展示.我们使用requests的方法对房价的信息做了爬取,一下就是我们所爬取的网页 我们做这个项目主要分为以下几个步骤 1 ...

  3. Python爬取抖音app视频

    作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...

  4. 青灯教育python免费公开课_如何使用Python爬取抖音APP视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...

  5. 使用python爬取抖音app视频(appium可以操控手机)

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  6. python爬取手机app图片_python 手机app数据爬取

    今天向大家介绍app爬取. @ 一:爬取主要流程简述 1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单. 2.在APP中想要查看请求与响应(类似浏览 ...

  7. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  8. 以某乎为实战案例,教你用Python爬取手机App数据

    1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...

  9. 使用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  10. 教你用Python爬取手机App数据!居然有人说爬不了APP

    最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据! 2. ...

最新文章

  1. Element Table 可以实现哪些常见的有用的功能
  2. 前端学习(41):背景实现视觉差效果
  3. linux的内置的账户_6 款面向 Linux 用户的开源绘图应用程序
  4. 何小鹏“维权”事后谈造车:心很累 曾购上千瓶白酒缓解压力
  5. svn\pristine\0a\0a66a6f1e12c54c3a0c3885a2bf5042977071358.svn-base系统找不到指定路径
  6. 51单片机入门(第二讲)
  7. Windows MFC 工程应用开发与框架原理完全剖析教程(上)
  8. ElasticSearch(8)-分布式搜索
  9. PE工具制作(大白菜+U盘启动模式)+系统重装
  10. python命令窗口代码如何调整大小_可调整窗口大小命令pythonmay
  11. 稀疏数组真心话大冒险
  12. 欧飞信科技ELEXCON 2022深圳国际电子展精彩回顾
  13. gitee仓库创建和git一些常见命令
  14. android判断银行卡号格式不正确,android银行卡号验证算法 android银行卡号验证算法详解...
  15. 一嗨租车今晚纽交所上市:发行价12美元
  16. System.ArgumentNullException: Value cannot be null. (Parameter connectionString)at Microsoft.Entit
  17. 浅谈前端、客户端、服务器、后台、与下位机之间的关系
  18. 于明:保护个人隐私的安全方案
  19. 05 python爬虫 (58同城项目)
  20. 多路数字信号采用同步时分复用(TDM)时复用线路需要的最小通信能力

热门文章

  1. 记录一个找直线三等分点的方法及其证明
  2. 二十一世纪大学英语读写教程(第二册)学习笔记(原文)——9 - Get Ready for Some Wild Weather(准备应对厄尔尼诺)
  3. 2018中国软件和信息技术服务综合竞争力百强企业名单
  4. python自带的库有哪些_python自带库
  5. vss 迁入后,服务器上面的文件没有变化,VSS迁移
  6. SpringCloud-Netflix
  7. js常用正则 验证数字正则
  8. 第十一届蓝桥杯 2020年省赛真题 (C/C++ 大学A组) 第一场
  9. Mysql中select into from用法
  10. leetcode【链表—中等】707.设计链表