首先,用 puppeteer 试过,没问题,但效率太低; 尝试破解接口, 返回为空。
from requests import Session
from time import time
from hashlib import md5
from urllib.request import urlparse
session = Session()
def tt(url = 'http://m.toutiao.com/profile/50502347096/'):
as_, cp_ = tt_encrypt()
datas = {
'page_type': '1',
'max_behot_time': '',
'uid': '50502347096',
'media_id': '50502347096',
'output': 'json',
'is_json': '1',
'count': 10,
'from': 'user_profile_app',
'version': '2',
'as': as_,
'cp': cp_,
'callback': 'jsonp5'
}
headers = {
'Referer': url,
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
article_api = 'https://www.toutiao.com/pgc/ma/'
r = session.get(article_api, headers=headers, params=datas)
print(r.url)
print(r.request.headers)
print(r.text)
def tt_encrypt():
now = int(time())
now_16 = hex(now).upper()[2:]
now_16_md5 = md5(now_16.encode('utf-8')).hexdigest().upper()
if len(now_16) == 8:
s = now_16_md5[0:5]
o = now_16_md5[-5:]
n = ''
l = ''
for i in range(5):
n += s[i] + now_16[i]
l += now_16[i+3] + o[i]
as_ = 'A1' + n + now_16[-3:]
cp_ = now_16[0:3] + l + 'E1'
else:
as_ = '479BB4B7254C150'
cp_ = '7E0AC8874BB0985'
return as_, cp_
if __name__ == '__main__':
tt()
接口返回
jsonp5({"media_id": 50502347096, "has_more": 0, "next": {"max_behot_time": 0}, "page_type": 1, "message": "success", "data": []})
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.