美文网首页python大数据 爬虫Python AI Sql程序员
Python爬虫-国家企业信用信息公示系统App

Python爬虫-国家企业信用信息公示系统App

作者: 爱柚子的陈同学 | 来源:发表于2017-12-03 17:07 被阅读2074次

    国家企业信用信息公示系统使用GeeTest滑块验证码。主站使用online验证模式,难破解。部分分站使用offline验证模式,易破解但多次HTTP请求应答往复,查询效率低。
    国家工商总局提供了Android,iOS App,这次就来尝试分析一下App的情况。
    总局网站有2套:
    新版 http://www.saic.gov.cn/
    旧版 http://old.saic.gov.cn/
    于是App下载说明页面也有2套:
    新版 http://gzhd.saic.gov.cn/gszj/index/telephone/android2.html
    旧版 http://gzhd.saic.gov.cn/gszj/index/telephone/android.html
    威武
    还好App只有1套。
    国家工商行政管理总局移动版客户端:
    Android版 http://gzhd.saic.gov.cn/gszj/saicwap.apk
    iOS版 https://itunes.apple.com/cn/app/gong-shang-zong-ju/id725956822?mt=8
    国家企业信用信息公示系统:
    Android版 http://gzhd.saic.gov.cn/gszj/gongshi.apk
    iOS版 https://itunes.apple.com/cn/app/%E5%9B%BD%E5%AE%B6%E4%BC%81%E4%B8%9A%E4%BF%A1%E7%94%A8%E4%BF%A1%E6%81%AF%E5%85%AC%E7%A4%BA%E7%B3%BB%E7%BB%9F/id1048375712?mt=8

    分析

    saicwap.apk,看这个名称,好像已经明白了什么。
    安装&运行&解包查看国家企业信用信息公示系统Android APK文件。
    UI交互体验基本上就是一个网页。
    dex很小,assets文件很多。
    根据名称搜索加猜测,直接得出结论,WebView外壳,JQuery+AJAX实现网页。
    使用Fiddler抓包,仅有一条简单的HTTP Request & Response。
    Response是标准JSON文本。

    填写Android Mobile HTTP Header参数。

    URL = 'http://yd.gsxt.gov.cn/QuerySummary'
    MOBILE_ACTION = 'entSearch'
    TOPIC = 1
    PAGE_NUM = 1
    PAGE_SIZE = 10
    USER_ID = 'id001'
    USER_IP = '192.168.0.1'
    USER_AGENT = 'Mozilla/5.0 (Linux; Android 4.4.2; vivo Y28L Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 Html5Plus/1.0'
    ACCEPT_LANGUAGE = 'zh-CN,en-US;q=0.8'
    XRW = 'com.zongjucredit'
    ORIGIN = 'file://'
    CHARSET = 'application/x-www-form-urlencoded; charset=UTF-8'
    

    使用requests库。

    def query(keyword):
        _data = [('mobileAction', MOBILE_ACTION),
                 ('keywords', keyword),
                 ('topic', TOPIC),
                 ('pageNum', PAGE_NUM),
                 ('pageSize', PAGE_SIZE),
                 ('userID', USER_ID),
                 ('userIP', USER_IP)]
        _headers = {'User-Agent': USER_AGENT,
                    'Accept-Language': ACCEPT_LANGUAGE,
                    'X-Requested-With': XRW,
                    'Origin': ORIGIN,
                    'Content-Type': CHARSET}
    
        _response = requests.post(URL, data=_data, headers=_headers)
        print(_response.status_code)
        if _response.status_code == 200:
            _content = _response.json()
            print(json.dumps(_content, indent=2, sort_keys=True, ensure_ascii=False))
    

    测试运行

    搜索关键字腾讯科技,得到50条数据
    格式示例:

    {
    "BUSEXCEPTCOUNT": "0",
    "CAT18": "10",
    "CAT2NAME": "法定代表人",
    "ENTNAME": "<font color=red>腾讯科技</font>(成都)有限公司",
    "ENTTYPE": "6150",
    "ESTDATE": "2008年07月10日",
    "NAME": "奚丹",
    "PRIPID": "BFA63C5493A3045829033A5B114CE66AFD1B796865F63020C39130E7149AE9152BAC6972D71F0C3A65B342A32972C4439717E803CD7E66773D486FDD9FCBAEC8",
    "REGNO": "510100400024413",
    "REGSTATE_CN": "存续(在营、开业、在册)",
    "S_EXT_NODENUM": "510000",
    "UNISCID": "915101006771521538"
    }
    

    实测,有时会封IP,24小时解禁,一旦封禁,爬虫和官方App一概屏蔽。
    威武+1。

    源码见GitHub

    https://github.com/9468305/python-script/tree/master/gsxt_mobile

    相关文章

      网友评论

        本文标题:Python爬虫-国家企业信用信息公示系统App

        本文链接:https://www.haomeiwen.com/subject/vhxzbxtx.html