From e48187f80a8271e488ead7eb0b845a0a50459fbe Mon Sep 17 00:00:00 2001 From: shiningdracon Date: Sat, 24 Sep 2022 08:23:31 -0700 Subject: [PATCH] fix(route): /zhihu/people/activities/:id (#10877) * api/v3/moments -> api/v4/web_moments * fix: tag not closing properly --- lib/v2/zhihu/activities.js | 4 ++-- lib/v2/zhihu/utils.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/v2/zhihu/activities.js b/lib/v2/zhihu/activities.js index 7d33df01ca..64421f190c 100644 --- a/lib/v2/zhihu/activities.js +++ b/lib/v2/zhihu/activities.js @@ -33,7 +33,7 @@ module.exports = async (ctx) => { const cookie = `d_c0=${cookie_mes}`; // second: get real data from zhihu - const apiPath = `/api/v3/moments/${id}/activities?limit=7&desktop=true`; + const apiPath = `/api/v4/web_moments/${id}/activities?limit=7&desktop=true`; // calculate x-zse-96, refer to https://github.com/srx-2000/spider_collection/issues/18 const f = `101_3_2.0+${apiPath}+${cookie_mes}`; @@ -42,7 +42,7 @@ module.exports = async (ctx) => { const response = await got({ method: 'get', - url: `https://www.zhihu.com/api/v3/moments/${id}/activities?limit=7&desktop=true`, + url: `https://www.zhihu.com/api/v4/web_moments/${id}/activities?limit=7&desktop=true`, headers: { ...utils.header, ..._header, diff --git a/lib/v2/zhihu/utils.js b/lib/v2/zhihu/utils.js index 4dbd29216e..0e808a9f10 100644 --- a/lib/v2/zhihu/utils.js +++ b/lib/v2/zhihu/utils.js @@ -6,12 +6,21 @@ module.exports = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36', }, ProcessImage(content) { - const $ = cheerio.load(content, { xmlMode: true }); + const $ = cheerio.load(content, null, false); $('noscript').remove(); $('a[data-draft-type="mcn-link-card"]').remove(); + $('a').each((_, elem) => { + const href = $(elem).attr('href'); + if (href.startsWith('https://link.zhihu.com/?target=')) { + const url = new URL(href); + const target = url.searchParams.get('target'); + $(elem).attr('href', decodeURIComponent(target)); + } + }); + $('img.content_image, img.origin_image, img.content-image, img.data-actualsrc, figure>img').each((i, e) => { if (e.attribs['data-actualsrc']) { $(e).attr({