捷风资讯app sign

捷风app提供了很多企业动态,包括招标,投标,采购和公共资源交易在内的各种数据。

本文案例是对捷风资讯app的接口分析和参数sign的分析。
案例环境:捷风资讯(安卓1.0.5)、charles、

@toc

在这里插入图片描述

搜索列表页接口分析

POST-URL:https://jiefengnews.com/api/ds/v2/search
FormData:

{
    "db_id":[1],
   "filter_conditions":{
       "keyword":[[{"key":"bid_company.stock_company.name","value":"宝信软件"}]],
       "time":[
           {"key":"publish_time",
            "value":{"gte":"2017-01-01 00:00:00","lte":"2021-12-24 12:34:20"}}
       ]
   },
    "search_word":"宝信软件",
    "size":10,
    "judge_result":1,
    "time_field":"publish_time",
    "cursor_field":"cursor",
    "export_fields":[
        "search_db","title",
        "bid_company.stock_company.stock_code",
        "bid_company.stock_company.concept_text",
        "bid_company.stock_company.name",
        "publish_time","bid_money",
        "bid_company.stock_company.order_percent",
        "bid_company.name"
    ]
}

搜索接口没有校验,所以可以直接模拟请求。
Python代码:

import requests

data ={
    "db_id":[1],
   "filter_conditions":{
       "keyword":[[{"key":"bid_company.stock_company.name","value":"宝信软件"}]],
       "time":[
           {"key":"publish_time",
            "value":{"gte":"2017-01-01 00:00:00","lte":"2021-12-24 12:34:20"}}
       ]
   },
    "search_word":"宝信软件",
    "size":10,
    "judge_result":1,
    "time_field":"publish_time",
    "cursor_field":"cursor",
    "export_fields":[
        "search_db","title",
        "bid_company.stock_company.stock_code",
        "bid_company.stock_company.concept_text",
        "bid_company.stock_company.name",
        "publish_time","bid_money",
        "bid_company.stock_company.order_percent",
        "bid_company.name"
    ]
}

headers = {
    'User-Agent':'MI 9(Android/5.1.1) (com.jiefengnews) UniApp/0.28.0 900x1600',
}
d = requests.post('https://jiefengnews.com/api/ds/v2/search',verify=False,json=data,headers=headers).text
print(d)

详情页接口分析

继续抓包分析
在这里插入图片描述

详情页接口:https://jiefengnews.com/api/ds/v2/data/detail
Formdata:

{
    "id": "11b4e6578de7cd07c4fafb9cab872789",
    "sign": "ldDPLpqqOM5Q3nsxFOfK7IjKjC4DLJuFW_2NYUxCC-v2KGoqMhXeh1cQx9KhUOy-",
    "db_id": 1,
    "export_fields": ["title", "publish_time", "project_province", "bid_company.name", "owner.name", "bid_money", "agency.name", "raw_html", "bid_company.stock_company.name", "bid_company.stock_company.stock_code", "bid_company.stock_company.full_name", "bid_company.stock_company.order_percent", "search_db"]
}

Formdata中有一个sign参数,没想到相同检索条件下的sign是一个定值。切换栏目后sign才会变。

那其实把每个栏目的sign都复制下来就能采集了。。。

比如:

  • 中标:"ldDPLpqqOM5Q3nsxFOfK7IjKjC4DLJuFW_2NYUxCC-v2KGoqMhXeh1cQx9KhUOy-"
  • 拿地:"HmB_Fm_Q1O_dYghmU3ESRVMTN022lQE5O1oHH-7xoyo="
  • 提前捕获:"T5_hYJPwHVwRM8BlicxXLAUJFIoED5QtlWWS8OaISvcFR3desRuTWctAhT-FwP-D"
  • 快讯聚合: "-NCmeQ3bXyUWEaFCQsoZ1w=="
  • 对外投资:"DHZWSDEwOLJOh2AplF1TOAVHd16xG5NZy0CFP4XA_4M="

根据你搜索时的分类标签,准备好详情页的sign值即可进行采集了。


源码分析

但是出于礼貌,还是要分析下源码中的sign,看看是怎么写的。
查壳,没壳。
在这里插入图片描述
放入Jadx中反编译。

静态分析了半天,未找到符合的sign代码。

所以判断该sign为定值。


请求示例

import requests
headers = {
    'User-Agent':'MI 9(Android/5.1.1) (com.jiefengnews) UniApp/0.28.0 900x1600',
}
data_search ={
    "db_id":[1],
   "filter_conditions":{
       "keyword":[[{"key":"bid_company.stock_company.name","value":"宝信软件"}]],
       "time":[
           {"key":"publish_time",
            "value":{"gte":"2017-01-01 00:00:00","lte":"2021-12-24 12:34:20"}}
       ]
   },
    "search_word":"宝信软件",
    "size":10,
    "judge_result":1,
    "time_field":"publish_time",
    "cursor_field":"cursor",
    "export_fields":[
        "search_db","title",
        "bid_company.stock_company.stock_code",
        "bid_company.stock_company.concept_text",
        "bid_company.stock_company.name",
        "publish_time","bid_money",
        "bid_company.stock_company.order_percent",
        "bid_company.name"
    ]
}
d = requests.post('https://jiefengnews.com/api/ds/v2/search',verify=False,json=data_search,headers=headers).text
print(d)

data_detail = {"id":"11b4e6578de7cd07c4fafb9cab872789","sign":"ldDPLpqqOM5Q3nsxFOfK7IjKjC4DLJuFW_2NYUxCC-v2KGoqMhXeh1cQx9KhUOy-","db_id":1,"export_fields":["title","publish_time","project_province","bid_company.name","owner.name","bid_money","agency.name","raw_html","bid_company.stock_company.name","bid_company.stock_company.stock_code","bid_company.stock_company.full_name","bid_company.stock_company.order_percent","search_db"]}
detail = requests.post('https://jiefengnews.com/api/ds/v2/data/detail',verify=False,json=data_detail,headers=headers).text
print(detail)
点赞

发表回复