用shell抓取某考试试题

一、背景

最近公司组织考信息安全,但考试机构没有整理出试题,只给了以下几个在线练习的链接,想着用博客整理下题库题型,奈何这个只能用拍照图片,然后用图片转文字的方式太慢,累死个人了,寻思着从接口读出所有试题。。

纯属技术分享,对试题感兴趣可以练习,都是信息安全知识

二、流程观察

1.在线的试题包括:单选题、多选题、判断题

单选 https://app3Audc5201856.h5.xiaoeknow.com/v1/evaluation_wechat/practice/wb_5e69a60334e2f_lfE62mBD?type=2

多选 https://app3Audc5201856.h5.xiaoeknow.com/v1/evaluation_wechat/practice/wb_5e69a4ce1e626_8KxgBZn5?type=2

判断 https://app3Audc5201856.h5.xiaoeknow.com/v1/evaluation_wechat/practice/wb_5e69982857d44_HcXQxLDv?type=2

2.做题过程

流程是:访问链接 – 微信扫码 – 做题界面 – 观察规律

单选题有100道,看着有4个选项(ABCD),序号从0到99.

多选题有100道,看着有4~ 4+个选项(ABCD or ABCDE…),序号从0到99.

判断题有100道,看着有2个选项(正确/错误),序号从0到99.

微信扫码如图:

用shell抓取某考试试题

做题界面:
单选题

用shell抓取某考试试题

用shell抓取某考试试题

多选题

用shell抓取某考试试题

判断题

用shell抓取某考试试题

3.接口返回

叫了开发工程师帮忙观察的, thank boy

按f12进入页面调试模式

谷歌浏览器

【网络(network)】 – 【停用缓存】|【保留日志】 – 【Fetch/XHR】

xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封装

大白话就是: 这是数据返回的结果

点我查看【 什么是xhr?】

f12调试模式如下图:

用shell抓取某考试试题

页面返回接口观察

发现 get_paper_question 接口有大量返回

用shell抓取某考试试题

发现0数组是第1道题目,0数组里面有0-3个数组是题目选项
也就是是 n数组就是题目n+1, n下有4个选项。

题目1选项1 [0]0
题目1选项2 [0]1
题目1选项3 [0]2
题目1选项4 [0]3

题目2选项1 [1]0
题目2选项2 [1]1
题目2选项3 [1]2
题目2选项4 [1]3

用shell抓取某考试试题

api接口观察

用shell抓取某考试试题
curl 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question'   -H 'authority: app3audc5201856.h5.xiaoeknow.com'   -H 'accept: application/json, text/plain, */*'   -H 'accept-language: zh-CN,zh;q=0.9'   -H 'cache-control: no-cache'   -H 'content-type: application/x-www-form-urlencoded'   -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659601468103_tlacsv"}; logintime=1659601475'   -H 'origin: https://app3audc5201856.h5.xiaoeknow.com'   -H 'pragma: no-cache'   -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a60334e2f_lfE62mBD?show_title=0'   -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"'   -H 'sec-ch-ua-mobile: ?0'   -H 'sec-ch-ua-platform: "Windows"'   -H 'sec-fetch-dest: empty'   -H 'sec-fetch-mode: cors'   -H 'sec-fetch-site: same-origin'   -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'   -H 'x-requested-with: XMLHttpRequest'   --data 'bizData%5Bpractice_id%5D=wb_5e69a60334e2f_lfE62mBD&bizData%5Bjoin_id%5D=uwb_62eb7fb493cc7_vpsNd0yHPQ&bizData%5Bstart%5D=0&bizData%5Bend%5D=9'   --compressed

修改为访问第1道题 【使用jq做json解析】

curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question'   -H 'authority: app3audc5201856.h5.xiaoeknow.com'   -H 'accept: application/json, text/plain, */*'   -H 'accept-language: zh-CN,zh;q=0.9'   -H 'cache-control: no-cache'   -H 'content-type: application/x-www-form-urlencoded'   -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659601468103_tlacsv"}; logintime=1659601475'   -H 'origin: https://app3audc5201856.h5.xiaoeknow.com'   -H 'pragma: no-cache'   -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a60334e2f_lfE62mBD?show_title=0'   -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"'   -H 'sec-ch-ua-mobile: ?0'   -H 'sec-ch-ua-platform: "Windows"'   -H 'sec-fetch-dest: empty'   -H 'sec-fetch-mode: cors'   -H 'sec-fetch-site: same-origin'   -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'   -H 'x-requested-with: XMLHttpRequest'   --data 'bizData%5Bpractice_id%5D=wb_5e69a60334e2f_lfE62mBD&bizData%5Bjoin_id%5D=uwb_62eb7fb493cc7_vpsNd0yHPQ&bizData%5Bstart%5D=0&bizData%5Bend%5D=0'   --compressed| jq .
{
  "code": 0,
  "msg": "success",
  "data": {
    "practice_list": [
      {
        "id": "qs_5e6f34e73f782_gmLix4D899",
        "content": "以下哪一项不是补丁管理过程的一部分?( )",
        "describ": "以下哪一项不是补丁管理过程的一部分?( )",
        "audio_urls": "",
        "question_library_id": "ql_5e68a077687be_JwjVBmjX",
        "is_material_question": 0,
        "type": 0,
        "correct_answer": [
          "op_90035e6f34e73f8b2_3APT1003"
        ],
        "analysis": "",
        "disorder_match": 0,
        "option": [
          {
            "app_id": "app3Audc5201856",
            "question_id": "qs_5e6f34e73f782_gmLix4D899",
            "id": "op_90005e6f34e73f7cf_qhAL1000",
            "content": " 评估补丁",
            "describ": " 评估补丁",
            "state": 0
          },
          {
            "app_id": "app3Audc5201856",
            "question_id": "qs_5e6f34e73f782_gmLix4D899",
            "id": "op_90015e6f34e73f81a_zjH21001",
            "content": " 测试补丁",
            "describ": " 测试补丁",
            "state": 0
          },
          {
            "app_id": "app3Audc5201856",
            "question_id": "qs_5e6f34e73f782_gmLix4D899",
            "id": "op_90025e6f34e73f862_b4Ke1002",
            "content": " 部署所有补丁",
            "describ": " 部署所有补丁",
            "state": 0
          },
          {
            "app_id": "app3Audc5201856",
            "question_id": "qs_5e6f34e73f782_gmLix4D899",
            "id": "op_90035e6f34e73f8b2_3APT1003",
            "content": " 审计补丁",
            "describ": " 审计补丁",
            "state": 0
          }
        ],
        "answer": [],
        "answer_state": "",
        "child": []
      }
    ],
    "practice_num": 100,
    "name": "网络信息运行管理员-单选题",
    "is_random": 0,
    "qes_num": 1,
    "question_setting": {
      "is_hide_audio_name": 1
    }
  }
}

变量调试(就是对这个json的字段获取kv)

赋值返回结果给data变量,并转json
data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question'   -H 'authority: app3audc5201856.h5.xiaoeknow.com'   -H 'accept: application/json, text/plain, */*'   -H 'accept-language: zh-CN,zh;q=0.9'   -H 'cache-control: no-cache'   -H 'content-type: application/x-www-form-urlencoded'   -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659601468103_tlacsv"}; logintime=1659601475'   -H 'origin: https://app3audc5201856.h5.xiaoeknow.com'   -H 'pragma: no-cache'   -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a60334e2f_lfE62mBD?show_title=0'   -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"'   -H 'sec-ch-ua-mobile: ?0'   -H 'sec-ch-ua-platform: "Windows"'   -H 'sec-fetch-dest: empty'   -H 'sec-fetch-mode: cors'   -H 'sec-fetch-site: same-origin'   -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'   -H 'x-requested-with: XMLHttpRequest'   --data 'bizData%5Bpractice_id%5D=wb_5e69a60334e2f_lfE62mBD&bizData%5Bjoin_id%5D=uwb_62eb7fb493cc7_vpsNd0yHPQ&bizData%5Bstart%5D=0&bizData%5Bend%5D=1'   --compressed| jq .)

获取题目数组
echo "${data}"|jq .data.practice_list|jq "keys" -r
[
  0,
  1
]

echo "${data}"|jq .data.practice_list|jq "keys" -r|grep -Eio "[0-9]{0,11}"
0
1

获取指定题目内的题目/某个选项
(这是题目1以及选项)

echo "${data}"|jq .data.practice_list|jq .[0].describ -r | sed 's###g'|sed 's###g'
以下哪一项不是补丁管理过程的一部分?( )

echo "${data}"|jq .data.practice_list|jq .[0].option[0].describ -r
 评估补丁
echo "${data}"|jq .data.practice_list|jq .[0].option[1].describ -r
 测试补丁
echo "${data}"|jq .data.practice_list|jq .[0].option[2].describ -r
 部署所有补丁
echo "${data}"|jq .data.practice_list|jq .[0].option[3].describ -r
 审计补丁

(这是题目2以及选项)

echo "${data}"|jq .data.practice_list|jq .[1].describ -r | sed 's###g'|sed 's###g'
 以下哪一项是使用基线的一种有效的配置管理方法? ( )

echo "${data}"|jq .data.practice_list|jq .[1].option[0].describ -r
 实施变更管理
echo "${data}"|jq .data.practice_list|jq .[1].option[1].describ -r
 使用镜像
echo "${data}"|jq .data.practice_list|jq .[1].option[2].describ -r
 实施漏洞管理
echo "${data}"|jq .data.practice_list|jq .[1].option[3].describ -r
 实施补丁管理

三、脚本

单选题脚本

#!/bin/env bash
#*************************************
#Author:                1656126280@qq.com
#Email:                 1656126280@qq.com
#Version:               1.0
#Created Time:          2022-08-04 17:36:44
#description:           xxx script
#Copyright© 2016-2022   All Rights Reserved
#*************************************

source /etc/profile

data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question'   -H 'authority: app3audc5201856.h5.xiaoeknow.com'   -H 'pragma: no-cache'   -H 'cache-control: no-cache'   -H 'accept: application/json, text/plain, */*'   -H 'x-requested-with: XMLHttpRequest'   -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'   -H 'content-type: application/x-www-form-urlencoded'   -H 'origin: https://app3audc5201856.h5.xiaoeknow.com'   -H 'sec-fetch-site: same-origin'   -H 'sec-fetch-mode: cors'   -H 'sec-fetch-dest: empty'   -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a60334e2f_lfE62mBD?show_title=0'   -H 'accept-language: zh-CN,zh;q=0.9'   -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%221805eb1a77c4c4-09b6d8087fee2a-3e604809-2073600-1805eb1a77d976%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%22182583ccd22867-0f956ea9a9ba2-3e604809-2073600-182583ccd23981%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; shop_version_type=4; xiaoe_loading_show=1; ko_token=685c3b778be5407b7cad4e3c16c5a351; dataUpJssdkCookie={"wxver":"","net":"","sid":""}; logintime=1659601444'   --data 'bizData%5Bpractice_id%5D=wb_5e69a60334e2f_lfE62mBD&bizData%5Bjoin_id%5D=uwb_62eb7fb493cc7_vpsNd0yHPQ&bizData%5Bstart%5D=0&bizData%5Bend%5D=9'   --compressed| jq .)

pravtice_num=$(echo "$data"| jq .data.practice_num)

data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question'   -H 'authority: app3audc5201856.h5.xiaoeknow.com'   -H 'pragma: no-cache'   -H 'cache-control: no-cache'   -H 'accept: application/json, text/plain, */*'   -H 'x-requested-with: XMLHttpRequest'   -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'   -H 'content-type: application/x-www-form-urlencoded'   -H 'origin: https://app3audc5201856.h5.xiaoeknow.com'   -H 'sec-fetch-site: same-origin'   -H 'sec-fetch-mode: cors'   -H 'sec-fetch-dest: empty'   -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a60334e2f_lfE62mBD?show_title=0'   -H 'accept-language: zh-CN,zh;q=0.9'   -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%221805eb1a77c4c4-09b6d8087fee2a-3e604809-2073600-1805eb1a77d976%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%22182583ccd22867-0f956ea9a9ba2-3e604809-2073600-182583ccd23981%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; shop_version_type=4; xiaoe_loading_show=1; ko_token=685c3b778be5407b7cad4e3c16c5a351; dataUpJssdkCookie={"wxver":"","net":"","sid":""}; logintime=1659601444'   --data "bizData%5Bpractice_id%5D=wb_5e69a60334e2f_lfE62mBD&bizData%5Bjoin_id%5D=uwb_62eb7fb493cc7_vpsNd0yHPQ&bizData%5Bstart%5D=0&bizData%5Bend%5D=${pravtice_num}"   --compressed| jq .)

for i in echo "$data" | jq .data.practice_list| jq "keys" -r|grep -Eio "[0-9]{0,11}"
do

    let timu_num=${i}+1
    timu=$(echo "$data"| jq .data.practice_list| jq .[${i}].describ -r|sed 's###g'|sed 's###g')

    echo "##${timu_num}.${timu}"

    for ii in echo "$data"| jq .data.practice_list| jq .[${i}].option |jq "keys" -r|grep -Eio "[0-9]{0,11}"
    do
        let option_num=${ii}+1
        option=$(echo "$data"| jq .data.practice_list| jq .[${i}].option[${ii}].describ -r)
        if [ ${ii} -eq 0 ];then
            echo "A ${option}"
        elif [ ${ii} -eq 1 ];then
            echo "B ${option}"
        elif [ ${ii} -eq 2 ];then
            echo "C ${option}"
        elif [ ${ii} -eq 3 ];then
            echo "D ${option}"
        elif [ ${ii} -eq 4 ];then
            echo "E ${option}"
        elif [ ${ii} -eq 5 ];then
            echo "F ${option}"
        elif [ ${ii} -eq 6 ];then
            echo "G ${option}"
        elif [ ${ii} -eq 7 ];then
            echo "H ${option}"
        fi
    done
    echo " "
    echo ""
    echo " "
    timu_num=""
    option_num=" "
done

多选题脚本

#!/bin/env bash
#*************************************
#Author:                1656126280@qq.com
#Email:                 1656126280@qq.com
#Version:               1.0
#Created Time:          2022-08-04 17:36:44
#description:           xxx script
#Copyright© 2016-2022   All Rights Reserved
#*************************************

source /etc/profile

data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question' \
  -H 'authority: app3audc5201856.h5.xiaoeknow.com' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659600931592_jztpdl"}; logintime=1659606033' \
  -H 'origin: https://app3audc5201856.h5.xiaoeknow.com' \
  -H 'pragma: no-cache' \
  -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a4ce1e626_8KxgBZn5?show_title=0' \
  -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
  -H 'x-requested-with: XMLHttpRequest' \
  --data 'bizData%5Bpractice_id%5D=wb_5e69a4ce1e626_8KxgBZn5&bizData%5Bjoin_id%5D=uwb_62eb802595b82_uXAHmnnnxs&bizData%5Bstart%5D=0&bizData%5Bend%5D=9' \
  --compressed| jq .)

pravtice_num=$(echo "$data"| jq .data.practice_num)

data=$(curl -s  'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question' \
  -H 'authority: app3audc5201856.h5.xiaoeknow.com' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659600931592_jztpdl"}; logintime=1659606033' \
  -H 'origin: https://app3audc5201856.h5.xiaoeknow.com' \
  -H 'pragma: no-cache' \
  -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69a4ce1e626_8KxgBZn5?show_title=0' \
  -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
  -H 'x-requested-with: XMLHttpRequest' \
  --data "bizData%5Bpractice_id%5D=wb_5e69a4ce1e626_8KxgBZn5&bizData%5Bjoin_id%5D=uwb_62eb802595b82_uXAHmnnnxs&bizData%5Bstart%5D=0&bizData%5Bend%5D=${pravtice_num}" \
  --compressed| jq .)

for i in echo "$data" | jq .data.practice_list| jq "keys" -r|grep -Eio "[0-9]{0,11}"
do

    let timu_num=${i}+1
    timu=$(echo "$data"| jq .data.practice_list| jq .[${i}].describ -r|sed 's###g'|sed 's###g')

    echo "##${timu_num}.${timu}"

    for ii in echo "$data"| jq .data.practice_list| jq .[${i}].option |jq "keys" -r|grep -Eio "[0-9]{0,11}"
    do
        let option_num=${ii}+1
        option=$(echo "$data"| jq .data.practice_list| jq .[${i}].option[${ii}].describ -r)
        if [ ${ii} -eq 0 ];then
            echo "A ${option}"
        elif [ ${ii} -eq 1 ];then
            echo "B ${option}"
        elif [ ${ii} -eq 2 ];then
            echo "C ${option}"
        elif [ ${ii} -eq 3 ];then
            echo "D ${option}"
        elif [ ${ii} -eq 4 ];then
            echo "E ${option}"
        elif [ ${ii} -eq 5 ];then
            echo "F ${option}"
        elif [ ${ii} -eq 6 ];then
            echo "G ${option}"
        elif [ ${ii} -eq 7 ];then
            echo "H ${option}"
        fi
    done
    echo " "
    echo ""
    echo " "
    timu_num=""
    option_num=" "
done

判断题脚本

data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question' \
  -H 'authority: app3audc5201856.h5.xiaoeknow.com' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659600993498_rmilrr"}; logintime=1659606554' \
  -H 'origin: https://app3audc5201856.h5.xiaoeknow.com' \
  -H 'pragma: no-cache' \
  -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69982857d44_HcXQxLDv?show_title=1' \
  -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
  -H 'x-requested-with: XMLHttpRequest' \
  --data 'bizData%5Bpractice_id%5D=wb_5e69982857d44_HcXQxLDv&bizData%5Bjoin_id%5D=uwb_62e88ef21dd79_uCBLskpNJe&bizData%5Bstart%5D=0&bizData%5Bend%5D=9' \
  --compressed|jq .)

pravtice_num=$(echo "$data"| jq .data.practice_num)

data=$(curl -s 'https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practices/get_paper_question' \
  -H 'authority: app3audc5201856.h5.xiaoeknow.com' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'cookie: sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%7D; sa_jssdk_2015_app3audc5201856_h5_xiaoeknow_com=%7B%22distinct_id%22%3A%2218257681c4c39e-0390a33cc29205-c4e7526-2073600-18257681c4dcfe%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%7D; ko_token=99b1450fc1b8cba28db705f4462ad155; xiaoe_loading_show=1; shop_version_type=4; dataUpJssdkCookie={"wxver":"","net":"","sid":"1659600993498_rmilrr"}; logintime=1659606554' \
  -H 'origin: https://app3audc5201856.h5.xiaoeknow.com' \
  -H 'pragma: no-cache' \
  -H 'referer: https://app3audc5201856.h5.xiaoeknow.com/evaluation_wechat/practice/enter/wb_5e69982857d44_HcXQxLDv?show_title=1' \
  -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
  -H 'x-requested-with: XMLHttpRequest' \
  --data "bizData%5Bpractice_id%5D=wb_5e69982857d44_HcXQxLDv&bizData%5Bjoin_id%5D=uwb_62e88ef21dd79_uCBLskpNJe&bizData%5Bstart%5D=0&bizData%5Bend%5D=${pravtice_num}" \
  --compressed|jq .)

for i in echo "$data" | jq .data.practice_list| jq "keys" -r|grep -Eio "[0-9]{0,11}"
do
    let timu_num=${i}+1
    timu=$(echo "$data"| jq .data.practice_list| jq .[${i}].describ -r|sed 's#<p>##g'|sed 's#</p>##g')

        echo "##${timu_num}.${timu}"
        echo "A &#x6B63;&#x786E;"
        echo "B &#x9519;&#x8BEF;"

        echo " "
        echo "<br>"
        echo " "
        timu_num=""
        option_num=" "
done

四、题库整理

信息安全应用工程师(高级)考试-12期

Original: https://www.cnblogs.com/linuxshare/p/16551090.html
Author: 爱折腾的大臭臭
Title: 用shell抓取某考试试题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573858/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Shell文件属性的判断与比较

    Shell支持对文件属性的判断,常用的文件属性操作符很多,如下表所示。更多文件属性操作符可以参考命令帮助手册man test [root@centos7&#xFF5E;]#…

    Linux 2023年6月6日
    081
  • Go实现安全双检锁的方法和最佳实践

    不安全的双检锁 从其他语言转入Go语言的同学经常会陷入一个思考:如何创建一个单例? 有些同学可能会把其它语言中的双检锁模式移植过来,双检锁模式也称为懒汉模式,首次用到的时候才创建实…

    Linux 2023年6月13日
    089
  • 通过域名查找IP地址

    1,打开cmd 2,敲入命令:nslookup 3,输入域名,如,www.baidu.com 4,得到address即IP地址 Original: https://www.cnbl…

    Linux 2023年6月8日
    094
  • Linux netstat:查看网络状态

    netstat 主要用于网络监控,在进程管理方面也很重要。它的输出分为两大部分,分别是网络和系统自己的进程相关性部分。 netstat [-atunlp] -a 列出目前系统上所有…

    Linux 2023年6月13日
    093
  • redis的另一个分支 keydb

    今天无意间发现了redis还有一个分支keydb 是多线程的,貌似在机器内核多的情况下效果比redis效果好 执行这些命令 在这之前先把redis关掉 sudo systemctl…

    Linux 2023年5月28日
    078
  • Makefile

    target … : prerequisites … command … … target可以是一个object file(目标文件),也可以是一个执行文件,还可以…

    Linux 2023年6月7日
    089
  • lvs

    1.lvs简介 2.结构体系 3.lvs工作模式及原理 4.配置lvs 4.1 部署lvs-nat模式的httpd负载集群—http协议 4.2 部署lvs-dr模式的…

    Linux 2023年6月13日
    090
  • 使用多线程提高REST服务器性能

    异步处理REST服务 1、使用Runnable异步处理Rest服务 释放主线程,启用副线程进行处理,副线程处理完成后直接返回请求 主要代码 import java.util.con…

    Linux 2023年6月7日
    0112
  • USB_ModeSwitch for Android 7

    测试步骤: 2.运行命令 adb shell usbmodeswitch -W -v 12d1 -p 1f01 -M ‘555342431234567800000000…

    Linux 2023年6月7日
    073
  • cgroup-v1在android中的应用实现浅析

    本文档内容主要是分析android设备中cgroup v1实现了哪些控制器,他们有哪些子控制器以及如何配置这些控制器的。 我是使用红米Note4Plus的开发版本来调研分析的,手机…

    Linux 2023年6月7日
    0107
  • 在 Windows 搭建 SVN 服务

    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/JIKNVuH5FIwEQMnYGxmRiQ …

    Linux 2023年6月6日
    0129
  • 【AutoSAR】 CP 和 AP

    概述 AutoSAR,全称为Automotive Open System Architecture(汽车开放系统架构)。是由全球各家汽车制造商、零部件供应商以及各种研究、服务机构共…

    Linux 2023年6月13日
    0121
  • Spring 4 集成 redis 实现缓存 一

    随着Web项目的复杂程度逐渐增加,可能会涉及诸如高并发、海量数据查询的的业务场景也逐渐增多;若频繁的操作数据库,会触发数据库的I/O瓶颈,因此需要加入缓存,尽量减少直接操作数据库的…

    Linux 2023年6月14日
    086
  • MSSQL中完整备份及完整还原的T-SQL实践

    | 0.37分钟 | 596.8字符 | 1、引言&背景 2、完整备份 3、完整还原 4、声明与参考资料 | SCscHero | 2022/5/27 AM12:47 | …

    Linux 2023年6月14日
    081
  • SPRINGBOOT(38)整合(9)redis

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/qiu-hua/p/16552545.htmlAutho…

    Linux 2023年5月28日
    092
  • Nginx几种负载均衡方式介绍

    Nginx几种负载均衡方式介绍 前言 负载均衡就是Nginx将请求分摊到不同的服务器中,保证服务的可用性,缓解服务压力,保证服务的响应速度,即使某一个应用服务不可用,也可以保证业务…

    Linux 2023年6月6日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球