Вит*_*аев 4 python curl request
所以有一个我想要跟进的网页 python.Requests
https://ororo.tv/api/v2/episodes/9
这需要基本认证.如果我像这样卷曲
curl -u test@example.com:password https://ororo.tv/api/v2/episodes/9
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在python中使用Requests库时,我得到了我想要的响应,就像这样
>>> r = requests.get('https://ororo.tv/api/v2/episodes/9', auth=('test@example.com', 'password'))
>>> r
<Response [520]>
Run Code Online (Sandbox Code Playgroud)
我总是得到520回应.有人能告诉我,我可能做错了什么?
是的,有微妙的差异.发送的标头略有不同,这些API显然很重要.
如果您更改要查询的URL http://httpbin.org/get(在线HTTP测试服务HTTPBin.org的终点,您可以看到内容的差异curl并requests发送:
$ curl -u test@example.com:password http://httpbin.org/get
{
"args": {},
"headers": {
"Accept": "*/*",
"Authorization": "Basic dGVzdEBleGFtcGxlLmNvbTpwYXNzd29yZA==",
"Host": "httpbin.org",
"User-Agent": "curl/7.51.0"
},
"origin": "84.92.98.170",
"url": "http://httpbin.org/get"
}
$ python -c "import requests; print(requests.get('http://httpbin.org/get', auth=('test@example.com', 'password')).text)"
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Authorization": "Basic dGVzdEBleGFtcGxlLmNvbTpwYXNzd29yZA==",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.11.1"
},
"origin": "84.92.98.170",
"url": "http://httpbin.org/get"
}
Run Code Online (Sandbox Code Playgroud)
突出差异:
requests发送一个额外的标头Accept-Encoding,设置为gzip, deflateUser-Agent报头的不同; 两者都反映了当前的代理商你必须看到这些标题中的哪一个导致https://ororo.tv/api/v2网站上的问题.当我纠正URL中使用v2和https一样的curl命令,并设置User-Agent标题,然后我得到一个有效的回应:
>>> headers = {'User-Agent': 'curl/7.51.0'}
>>> r = requests.get('https://ororo.tv/api/v1/episodes/9',
auth=('test@example.com', 'password'), headers=headers)
>>> r
<Response [200]>
>>> from pprint import pprint
>>> pprint(r.json())
{'airdate': '2005-10-13',
'download_url': 'https://static-uk2.ororo.tv/uploads/video/file/9/Everybody.Hates.Chris.S01E04.DVDRip.Everybody.Hates.Sausage_1480525209.mp4?attachment=true&wmsAuthSign=aWQ9ODAzNDI3Kyt2aWRlbys5JnNlcnZlcl90aW1lPTIvOC8yMDE3IDI6Mjc6MDQgUE0maGFzaF92YWx1ZT1kbEpGM3c1bldSOXBOMUg5V2N1S0NnPT0mdmFsaWRtaW51dGVzPTk2MCZzdHJtX2xlbj05NQ%3D%3D',
'id': 9,
'name': 'Everybody Hates Sausage',
'number': '4',
'plot': 'When Julius buys a big crate of sausage, he makes everyone eat it '
'with every meal. But Tonya refuses to, causing friction between the '
'her and Rochelle. While at school, Chris is sentenced to 3 days of '
'detention after a rumor goes round about him beating up the school '
'bully, Joey.',
'resolution': 'SD',
'season': 1,
'show_name': 'Everybody hates Chris',
'subtitles': [{'lang': 'en',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/4867/Everybody.Hates.Chris.S01E04.DVDRip.Everybody.Hates.Sausage.eng.vtt'},
{'lang': 'ru',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/28629/Everybody.Hates.Chris.S01E04.DVDRip.Everybody.Hates.Sausage.vtt'},
{'lang': 'es',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/55744/1x04_EH_Sausage.vtt'},
{'lang': 'pt',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/124429/Everybody_Hates_Chris_104_-_Everybody_Hates_Sausage.vtt'},
{'lang': 'cs',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/217213/Everybody_Hates_Chris_104_-_Everybody_Hates_Sausages.vtt'},
{'lang': 'tr',
'url': 'https://uploads.ororo-mirror.tv/uploads/subtitle/file/192405/Everybody_Hates_Chris_S01E04_-_Everybody_Hates_Sausages-tur.vtt'}],
'updated_at': 1480640069,
'url': 'https://static-gra.ororo.tv/uploads/video/file/9/Everybody.Hates.Chris.S01E04.DVDRip.Everybody.Hates.Sausage_1480525209.smil/playlist.m3u8?wmsAuthSign=aWQ9ODAzNDI3Kyt2aWRlbys5JnNlcnZlcl90aW1lPTIvOC8yMDE3IDI6Mjc6MDQgUE0maGFzaF92YWx1ZT1FajlGK2JPMEd3aU1Lc3lnN1M4NlpBPT0mdmFsaWRtaW51dGVzPTk2MCZzdHJtX2xlbj05Ng%3D%3D'}
Run Code Online (Sandbox Code Playgroud)