【2020-09-22】某药品信息APP抓包

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

项目场景:


地址:aHR0cDovL2FwcDEubm1wYS5nb3YuY24vZGF0YV9ubXBhL2ZhY2UzL2Jhc2UuanNwP3RhYmxlSWQ9MjUmdGFibGVOYW1lPVRBQkxFMjUmdGl0bGU9JUU1JTlCJUJEJUU0JUJBJUE3JUU4JThEJUFGJUU1JTkzJTgxJmJjSWQ9MTUyOTA0NzEzNzYxMjEzMjk2MzIyNzk1ODA2NjA0
  1. 数据接口上有个6SQk6G2z加密的参数,同时详情页有c1SoYK0a加密参数,只要知道这两个参数是怎么来的,就可以解决数据的全站获取,然而我最近在页面前端调试了下,发现他是通过发request+post请求接口得到的数据,中间加密参数过程没有明文显示,JS代码变量名函数名完全混淆不可逆,可能是我太菜了,没有找到吧,如果有大佬知道的话,希望可以给小弟透露下方法~
    在这里插入图片描述

  2. 使用selenium去拿数据,会有几个问题,页面长时间爬取会崩溃,需要代理IP,爬取速度慢等……

问题描述:

这么一想,从web端获取数据不是一个好方法,那么我们转向他的APP端,抓他APP里请求数据的链接,准备以下工具,我们就开始操作了:
  1. Fiddler抓包工具。
  2. MuMu模拟器或者一部手机(博主用的是模拟器,可能不方便操作,建议使用手机哦~)。
  3. 在模拟器或者手机上装好他的APP: 链接
  4. 不会抓手机的包?好~贴个链接https://www.jianshu.com/p/724097741bdf

解决方案:


1.配置好我们的工具后,就可以开始抓包了,先清空下fiddler抓到的请求,然后点击APP的药品。

在这里插入图片描述

2.很好,数据已经被我们抓到了,贴下链接,先看下上图我圈出来的右上方,有几个参数需要介绍下。
  1. tableId:药品类型ID(就是每个栏目特有的ID)
  2. pageIndex:当前所处页数
  3. pageSize:每页的数据量
然后把拿到的json数据格式化下,可以看到每一条数据的标题
# 链接--这里注意下,访问链接时需要使用安卓的请求头哦~
http://mobile.nmpa.gov.cn/datasearch/QueryList?tableId=25&searchF=Quick%20SearchK&pageIndex=1&pageSize=15
[
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟龙中风丸 (86901343001160 国药准字Z20020147 沈阳红药集团股份有限公司)",
        "ID":"109228"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟龄集 (86902884000629 国药准字Z14020687 山西广誉远国药有限公司)",
        "ID":"73590"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟黄补酒 (86901890000661;86901890000678;86901890000654 国药准字Z20026072 远大医药黄石飞云制药有限公司)",
        "ID":"102841"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾胶囊 (86905098000638 国药准字Z20123109 广西华天宝药业有限公司)",
        "ID":"120532"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾片 (86900427000075 国药准字Z20080217 广东心宝药业科技有限公司)",
        "ID":"41884"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾片 (86903249000087 国药准字Z20090420 郑州福瑞堂制药有限公司)",
        "ID":"133086"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾口服液 (86900291000263 国药准字Z44023432 广东华天宝药业集团有限公司(药品上市许可持有人))",
        "ID":"108891"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾丸 (86900415000308 国药准字Z44020148 广州花城药业有限公司)",
        "ID":"142930"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾丸 (86900291000294 国药准字Z44022779 广东华天宝药业集团有限公司)",
        "ID":"66724"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿补肾丸 (86900291000270 国药准字Z44022778 广东华天宝药业集团有限公司(药品上市许可持有人))",
        "ID":"114636"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿益肾胶囊 (86905004000028 国药准字B20020196 湖南康寿制药有限公司)",
        "ID":"155866"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿滋肾丸 (86900008000272 国药准字Z11020387 北京宝树堂科技药业有限公司)",
        "ID":"161886"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿滋肾丸 (86905156002598 国药准字Z45020433 广西梧州制药(集团)股份有限公司)",
        "ID":"158752"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿滋肾丸 (86905156002604 国药准字Z45020432 广西梧州制药(集团)股份有限公司)",
        "ID":"117237"
    },
    {
    
    
        "COUNT":162127,
        "CONTENT":"龟鹿滋肾丸 (86900256000413 国药准字Z44023076 国药集团冯了性(佛山)药业有限公司)",
        "ID":"73911"
    }
]

3.OK,然后我们再抓一下详情页的包,这里也需要注意以下几个参数:
  1. tableId:药品类型ID(就是每个栏目特有的ID)
  2. searchK:列表页获取到数据的ID
# 链接
http://mobile.nmpa.gov.cn/datasearch/QueryRecord?tableId=25&searchF=ID&searchK=109228

在这里插入图片描述

4.看下请求到的数据,数据跟web上的一样,接下来就只需要构造请求列表页的URL就可以获取相应的数据了哦!(其他栏目里的数据相信聪明的你们一样可以获取到~)
[
    {
    
    
        "NAME":"批准文号",
        "CONTENT":"国药准字Z20020147"
    },
    {
    
    
        "NAME":"产品名称",
        "CONTENT":"龟龙中风丸"
    },
    {
    
    
        "NAME":"英文名称",
        "CONTENT":""
    },
    {
    
    
        "NAME":"商品名",
        "CONTENT":""
    },
    {
    
    
        "NAME":"剂型",
        "CONTENT":"丸剂(水丸)"
    },
    {
    
    
        "NAME":"规格",
        "CONTENT":"每30丸重5g"
    },
    {
    
    
        "NAME":"上市许可持有人",
        "CONTENT":""
    },
    {
    
    
        "NAME":"生产单位",
        "CONTENT":"沈阳红药集团股份有限公司"
    },
    {
    
    
        "NAME":"生产地址",
        "CONTENT":"沈阳市大东区北大营西路2号"
    },
    {
    
    
        "NAME":"产品类别",
        "CONTENT":"中药"
    },
    {
    
    
        "NAME":"批准日期",
        "CONTENT":"2015-07-30"
    },
    {
    
    
        "NAME":"原批准文号",
        "CONTENT":""
    },
    {
    
    
        "NAME":"药品本位码",
        "CONTENT":"86901343001160"
    },
    {
    
    
        "NAME":"药品本位码备注",
        "CONTENT":""
    },
    {
    
    
        "NAME":"注",
        "CONTENT":"企业用户如对药品数据信息有疑问,请及时与我局信息中心数据整理组联系,来电前请备好相应的批件证明材料以备工作人员查询。电话:88331520(工作日);企业用户也可通过发邮件与我们联系:邮件地址[email protected],邮件主题请注明“药品批件问题”,邮件正文中请准确填写以下全部信息:1.药品批准文号/注册证号;2.药品批件号;3.药品批件类型(注册批件、补充批件、包材注册证、药品标准颁布件、再注册批件、其他);4.问题描述(500字以内);5.企业名称(全称);6.统一社会信用代码;7.联系人姓名;8.联系电话(手机和座机);9.电子邮件。以上内容请勿直接以电子邮件附件形式发送。",
        "DESCRIPTION":"企业用户如对药品数据信息有疑问,请及时与我局信息中心数据整理组联系,来电前请备好相应的批件证明材料以备工作人员查询。电话:88331520(工作日);企业用户也可通过发邮件与我们联系:邮件地址[email protected],邮件主题请注明“药品批件问题”,邮件正文中请准确填写以下全部信息:1.药品批准文号/注册证号;2.药品批件号;3.药品批件类型(注册批件、补充批件、包材注册证、药品标准颁布件、再注册批件、其他);4.问题描述(500字以内);5.企业名称(全称);6.统一社会信用代码;7.联系人姓名;8.联系电话(手机和座机);9.电子邮件。以上内容请勿直接以电子邮件附件形式发送。"
    }
]

注:用requests直接请求是拿不到数据的,因为没有cookie,cookie主要是neCYtZEjo8GmS和neCYtZEjo8GmT,建议用selenium获取cookie信息,大概几分钟会过期。

猜你喜欢

转载自blog.csdn.net/qq_26079939/article/details/108732969