iaunco 6 gadi atpakaļ
vecāks
revīzija
d00cfcc904
3 mainītis faili ar 40 papildinājumiem un 17 dzēšanām
  1. 4 1
      README.md
  2. 36 16
      index.js
  3. BIN
      自动提交申报工具使用.docx

+ 4 - 1
README.md

@@ -1,12 +1,15 @@
 使用步骤:
 ```
+安装node.js环境 https://nodejs.org/
+```
+```
 # 安装依赖
 npm install -g cnpm --registry=https://registry.npm.taobao.org
 cnpm i --registry=https://registry.npm.taobao.org
 ```
 
 ```
-# ===修改index.js的urls数组===
+# ===修改index.js的urls数组(按照word抓包操作)===
 ```
 
 ```

+ 36 - 16
index.js

@@ -5,7 +5,7 @@ const fs = require('fs');
 //need: reply_info, sign
 //from url: https://testmis.ssti.net.cn/xswxcs/?reply_info=******&sign=******
 const info = [
-    ['reply_info', 'sign'],
+    ['reply_info', 'sign']
 ];
 
 let infoOK = [];
@@ -19,7 +19,7 @@ function getDate() {
 
 async function interval() {
     const browser = await puppeteer.launch({
-        headless: false, // 是否隐藏窗口(默认true)
+        // headless: false, // 是否隐藏窗口(默认true)
         // defaultViewport: {width: 800, height: 600} // 截图大小
     });
     let lastDay = null; // 记录上一秒的日期
@@ -35,8 +35,7 @@ async function interval() {
             // 日期变动,清空数组
             infoOK = [];
         }
-        console.log(hour, min, sec);
-        if ((hour === 0 && min < 30) ||(hour === 0 && min === 30 && sec <= 30) || hour >= 16) {
+        if ((hour === 0 && min < 30) || (hour === 0 && min === 30 && sec <= 30) || hour >= 16) {
             return;
         }
         for (let i = 0, j = info.length; i < j; i++) {
@@ -45,10 +44,10 @@ async function interval() {
                 try {
                     await run(browser, info[i][0], info[i][1]);
                 } catch (e) {
-                    console.log(i, e);
+                    console.log("[" + hour + " " + min + " " + sec + "]", i, e);
                     setTimeout(function () {
                         infoOK[i] = false; // 出错,一分钟后重试
-                    }, 10000);
+                    }, 60000);
                     return;
                 }
             }
@@ -80,6 +79,7 @@ async function run(browser, replyInfo, sign) {
             reject("URL Error");
             return;
         }
+
         try {
             await page.goto("https://testmis.ssti.net.cn/xswxcs/pages/Epidemic/EpidemicApply.aspx", {waitUntil: 'networkidle2'});
         } catch (e) {
@@ -110,22 +110,42 @@ async function run(browser, replyInfo, sign) {
             reject("Get Name Error");
             return;
         }
-        console.log(name);
+
+        await page.on('response', async (response) => {
+            if (response.url() === "https://testmis.ssti.net.cn/xswxcs/Api/MedicalObHandle.ashx?action=add") {
+                const data = await response.json();
+                if (data["msg"].indexOf("成功") !== -1) {
+                    console.log(name + " 成功");
+                    try {
+                        await page.screenshot({path: "img/" + name + "-" + getDate() + '.png'});
+                    } catch (e) {
+                        // 捕捉可能的截图错误
+                    }
+                    // await sleep(2000);
+                    await page.close();
+                    resolve();
+                } else {
+                    console.log(name + " 失败:" + data["msg"]);
+                    await page.close();
+                    reject(data["msg"]);
+                }
+            } else {
+                // 不应该还有其他请求(也可能是提交URL发生改变)
+                await page.close();
+                reject("Unknown URL: " + response.url());
+            }
+
+        });
         try {
             await page.click("#Apply_Epidemic");
         } catch (e) {
             await page.close();
             reject("Submit Error");
-            return;
-        }
-        try {
-            await page.screenshot({path: "img/" + name + "-" + getDate() + '.png'});
-        } catch (e) {
-            // 捕捉可能的截图错误
         }
-        await sleep(2000);
-        await page.close();
-        resolve();
+
+        // await sleep(2000);
+        // await page.close();
+        // resolve();
     });
 }
 

BIN
自动提交申报工具使用.docx