python以后可能增加的特性_python requests添加hyper HTTP2特性之后报400错误

python requests添加hyper HTTP2特性之后报400错误

Bad Request (Invalid Header Name)

我想要模拟浏览器的这个请求:

bVZUSw?w=951&h=711

post的参数都是之前的流程破解的,我可以确定我推算的是正确的。

我的代码是这样的:

requests HTTP1 版本

def jiexi_iqiyi(url):

#省略破解post的参数的部分

get_m3u8_api = "https://api.47ks.com/config/webmain.php"

data = {

"k": k,

"k2": k2,

"ep": ep,

"cip": cip,

"cip_hex": cip_hex,

"csign": csign,

"tm": tm,

"v": v,

"pt": pt,

"nip": nip,

"from": from_,

"mode": mode

}

data_string = ''

for key, value in data.items():

data_string += key + "=" + value.replace("?", "%3F").replace("/", "%2F").replace("%2B", "%252B").replace(":","%3A") + "&"

data_string = data_string[0:-1]

content_length = len(data_string)

headers = {

"accept" : "application/json, text/javascript, */*; q=0.01",

"accept-encoding" : "gzip, deflate, br",

"accept-language" : "zh-CN,zh;q=0.8",

"cache-control" : "no-cache",

"content-length" : str(content_length),

"content-type" : "application/x-www-form-urlencoded; charset=UTF-8",

"cookie" : "47KS_uuid=0ba0439b-56a4-98d7-f974-33a023914016; 47KS_upid=d3JJeXlSdDA5QmRFVF9sUjNkY2pZbVlicWZxdGF5dzNBV2UwYkhXRDFRRTYvM3diMFhIN0hVVHBsazY3VTJUMmhLWTU1Y2VDdDFnTE8yeGpTVnFvVUltUWkvRUQwcTd2TDFpb2wyeWI3RU0vUnBoMXkzdmJmQk0%3D; UM_distinctid=160300441d91e7-0694eb159e8a5-7910717d-1fa400-160300441da117; yd_srvbl=7a0951e72b6b3906e732575bc0dda444; CNZZDATA1260594368=1355421933-1512629667-null%7C1512651272",

"origin" : "https://api.47ks.com",

"pragma" : "no-cache",

"referer" : "https://api.47ks.com/webcloud/?v="+url,

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4399.400 QQBrowser/9.7.12777.400",

"x-requested-with" : "XMLHttpRequest",

}

r = requests.post(get_m3u8_api,data=data,headers=headers)

出现了这样的错误:{"msg":"[Err:ERF]请求被拒绝,如有疑问请联系管理员!","success":0}

我刚开始也很怀疑是不是自己post参数的演算出错了,但是我真的真的是已经检查很多很多次了,真的是感觉没问题啊。

浏览器的真实请求中是有个":authority"请求头字段的,说明这是一个HTTP2的请求。于是在一番查资料之后,我找到了hyper

requests + hyper HTTP2 版本

def jiexi_iqiyi(url):

#省略破解post的参数的部分

get_m3u8_api = "https://api.47ks.com/config/webmain.php"

data = {

"k": k,

"k2": k2,

"ep": ep,

"cip": cip,

"cip_hex": cip_hex,

"csign": csign,

"tm": tm,

"v": v,

"pt": pt,

"nip": nip,

"from": from_,

"mode": mode

}

data_string = ''

for key, value in data.items():

data_string += key + "=" + value.replace("?", "%3F").replace("/", "%2F").replace("%2B", "%252B").replace(":","%3A") + "&"

data_string = data_string[0:-1]

content_length = len(data_string)

headers = {

":authority" : "api.47ks.com",

":method" : "POST",

":path" : "/config/webmain.php",

":scheme" : "https",

"accept" : "application/json, text/javascript, */*; q=0.01",

"accept-encoding" : "gzip, deflate, br",

"accept-language" : "zh-CN,zh;q=0.8",

"cache-control" : "no-cache",

"content-length" : str(content_length),

"content-type" : "application/x-www-form-urlencoded; charset=UTF-8",

"cookie" : "47KS_uuid=0ba0439b-56a4-98d7-f974-33a023914016; 47KS_upid=d3JJeXlSdDA5QmRFVF9sUjNkY2pZbVlicWZxdGF5dzNBV2UwYkhXRDFRRTYvM3diMFhIN0hVVHBsazY3VTJUMmhLWTU1Y2VDdDFnTE8yeGpTVnFvVUltUWkvRUQwcTd2TDFpb2wyeWI3RU0vUnBoMXkzdmJmQk0%3D; UM_distinctid=160300441d91e7-0694eb159e8a5-7910717d-1fa400-160300441da117; yd_srvbl=7a0951e72b6b3906e732575bc0dda444; CNZZDATA1260594368=1355421933-1512629667-null%7C1512651272",

"origin" : "https://api.47ks.com",

"pragma" : "no-cache",

"referer" : "https://api.47ks.com/webcloud/?v="+url,

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4399.400 QQBrowser/9.7.12777.400",

"x-requested-with" : "XMLHttpRequest",

}

s = requests.Session()

s.mount("https://api.47ks.com/", HTTP20Adapter())

r = s.post(get_m3u8_api, data=data,headers=headers)

程序报错:

Bad Requests (Invalid Header Name)

该怎么解决啊:(

最后附上这个小爬虫的背景:

网址:http://www.vi0.cc/

我想通过分析线路6的HTTP请求,自动获得视频的mp4或者m3u8文件地址...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值