hy_cicada 发表于 2022-1-11 19:46

某米刷步数接口爬取

帮朋友爬取一个刷小米步数的接口,这样就可以定时刷,不用每天登陆刷了,但是碰到一个问题
使用 Axios 发送请求会被告知是爬取,但是使用 Fetch 就能够爬取成功,求大佬帮分析一下

```
import {encode} from "js-base64";
import fetch from "node-fetch";
import axios from "axios";
import md5 from "js-md5";
import qs from "qs";

!(async () => {

    let time = String(parseInt((new Date).getTime() / 1000 + ""));

    console.log(time)

    await axiosSportLogin(time, "12345678901", "12345678901", "99999")
    await fetchSportLogin(time, "12345678901", "12345678901", "99999")


})().catch((e) => {

}).finally(() => {

})

async function axiosSportLogin(time, phone, password, step) {

    const data = {
      'time': time,
      'phone': phone,
      'password': password,
      'step': step,
      'key': md5(encode(`${phone}1${password}2${step}xjdsb${time}`))
    };

    const header = {
      "accept": "application/json, text/javascript, */*; q=0.01",
      "accept-language": "zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7",
      "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
      "sec-fetch-dest": "empty",
      "sec-fetch-mode": "cors",
      "sec-fetch-site": "same-site",
      "referrer": "https://xxx.xxx.xxx/",
      "referrerPolicy": "strict-origin-when-cross-origin",
      "mode": "cors",
      "credentials": "omit"
    }

    return await axios.post("https://xxx.xxx.xxx/xxx/xx.php", qs.stringify(data), {headers: header}).then(function (response) {

      console.log(response.data)

    }).catch(function (error) {
      console.log(JSON.stringify(error))
      console.log('PI请求失败,请检查网路重试');
    })
}

async function fetchSportLogin(time, phone, password, step) {
    return await fetch("https://xxx.xxx.xxx/xxx/xx.php", {
      "headers": {
            "accept": "application/json, text/javascript, */*; q=0.01",
            "accept-language": "zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7",
            "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
            "sec-fetch-dest": "empty",
            "sec-fetch-mode": "cors",
            "sec-fetch-site": "same-site"
      },
      "referrer": "https://xxx.xxx.xxx/",
      "referrerPolicy": "strict-origin-when-cross-origin",
      "body": "time=" + time + "&phone=" + phone + "&password=" + password + "&step=" + step + "&key=" + md5(encode(`${phone}1${password}2${step}xjdsb${time}`)),
      "method": "POST",
      "mode": "cors",
      "credentials": "omit"
    }).then(res => res.text()).then(res => console.log(JSON.parse(res)))
}
```



没有放链接,这个网站有收费的接口,小白一个,不敢{:1_890:}

孙云 发表于 2022-1-11 21:34

三滑稽甲苯 发表于 2022-1-11 21:53

理论上说发包完全一样是不可能检测出来的,所以还是检查一下哪里不一样吧

′奶灬嘴丶 发表于 2022-1-11 22:01

//xxx.xxx.xxx/ LZ,你这个有点秀啊{:1_918:}

Lewime 发表于 2022-1-11 23:20

这种刷步数的用官方的接口不好么

xiaotian6 发表于 2022-1-12 08:12

云函数不好用吗?

wanlinwo 发表于 2022-1-12 08:51

hy_cicada 发表于 2022-1-12 09:47

Lewime 发表于 2022-1-11 23:20
这种刷步数的用官方的接口不好么

我不太清楚,一个朋友让我爬这个网站

hy_cicada 发表于 2022-1-12 09:49

xiaotian6 发表于 2022-1-12 08:12
云函数不好用吗?

好用,我先在本地跑一下
页: [1]
查看完整版本: 某米刷步数接口爬取