コード例 #1
0
ファイル: utils.py プロジェクト: xidao4/cloud-computing
 def check(self):
     """
     检查权限情况
     -1: csrf 校验失败
     -2: SESSDATA值有误
     -3: 未提供SESSDATA
     :return:
     """
     ret = {"code": -2, "message": ""}
     if not self.has_sess():
         ret["code"] = -3
         ret["message"] = "未提供SESSDATA"
     else:
         api = "https://api.bilibili.com/x/web-interface/archive/like"
         data = {"bvid": "BV1uv411q7Mv", "like": 1, "csrf": self.csrf}
         req = requests.post(url=api, data=data, cookies=self.get_cookies())
         if req.ok:
             con = req.json()
             if con["code"] == -111:
                 ret["code"] = -1
                 ret["message"] = "csrf 校验失败"
             elif con["code"] == -101 or con["code"] == -400:
                 ret["code"] = -2
                 ret["message"] = "SESSDATA值有误"
             else:
                 ret["code"] = 0
                 ret["message"] = "0"
         else:
             raise exceptions.NetworkException(req.status_code)
     return ret
コード例 #2
0
def request(method: str,
            url: str,
            params=None,
            data=None,
            cookies=None,
            headers=None,
            data_type: str = "form",
            **kwargs):
    if params is None:
        params = {}
    if data is None:
        data = {}
    if cookies is None:
        cookies = {}
    if headers is None:
        headers = copy.deepcopy(DEFAULT_HEADERS)
    if data_type.lower() == "json":
        headers['Content-Type'] = "application/json"
    st = {
        "url": url,
        "params": params,
        "cookies": cookies,
        "headers": headers,
        "verify": request_settings["use_https"],
        "data": data,
        "proxies": request_settings["proxies"]
    }
    st.update(kwargs)

    req = requests.request(method, **st)

    if req.ok:
        content = req.content.decode("utf8")
        if req.headers.get("content-length") == 0:
            return None
        if 'jsonp' in params and 'callback' in params:
            con = json.loads(re.match(".*?({.*}).*", content, re.S).group(1))
        else:
            con = json.loads(content)
        if con["code"] != 0:
            if "message" in con:
                msg = con["message"]
            elif "msg" in con:
                msg = con["msg"]
            else:
                msg = "请求失败,服务器未返回失败原因"
            raise exceptions.BilibiliException(con["code"], msg)
        else:
            if 'data' in con.keys():
                return con['data']
            else:
                if 'result' in con.keys():
                    return con["result"]
                else:
                    return None
    else:
        raise exceptions.NetworkException(req.status_code)