diff --git a/docs/social-media.md b/docs/social-media.md
index efd07a304..298c4fa69 100644
--- a/docs/social-media.md
+++ b/docs/social-media.md
@@ -934,7 +934,7 @@ rule
### 用户回答
-
+
### 用户文章
diff --git a/lib/routes/zhihu/answers.js b/lib/routes/zhihu/answers.js
index c0a10ea29..019090d5a 100644
--- a/lib/routes/zhihu/answers.js
+++ b/lib/routes/zhihu/answers.js
@@ -1,68 +1,62 @@
const got = require('@/utils/got');
const utils = require('./utils');
-const crypto = require('crypto');
-const jsencrypt = require('./execlib/jsencrypt');
module.exports = async (ctx) => {
const id = ctx.params.id;
-
- const d_c0 = await getDC0FromCookies(id);
-
- const zst81 =
- '3_2.0ae3TnRUTEvOOUCNMTQnTSHUZo02p-HNMZBO8YD_q2Xtuo_Y0K6P0E6uy-LS9-hp1DufI-we8gGHPgJO1xuPZ0GxCTJHR7820XM20cLRGDJXfgGCBxupMuD_Ic4cpr4w0mRPO7HoY70SfquPmz93mhDQyiqV9ebO1hwOYiiR0ELYuUrxmtDomqU7ynXtOnAoTh_PhRDSTF82VVh29ZhFL1bUYbLgszUc04wFMCrLf9ucOA9HYMGVmzDwyJG2_tJSC4CeTveg11UY9qcX0DhoY2eS1u9efxCVqxGYMhrxyqh2pwucY8bSBwge0Vbx8fBtYWuVMcqumUqSBchLCzJLOErpL3hepEgHfyuYBZrx9oBo1o7NY7CL_fh90Vqkwq9COGMVYzc9BnugLJCw9-GXmShgO0h3KHU2YsQx0zqxY8DNmuUwOMwt1oMOOQvN_iBg8ZqVBtbo_rDwVQvw1JUNmZcN_wBSBAD3KwqN83rO0QTLsWwYC';
- const zse83 = '3_2.0';
-
- const path = `/api/v4/members/${id}/answers?include=data%5B*%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Cmark_infos%2Ccreated_time%2Cupdated_time%2Creview_info%2Cexcerpt%2Cis_labeled%2Clabel_info%2Crelationship.is_authorized%2Cvoting%2Cis_author%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B*%5D.author.badge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B*%5D.question.has_publishing_draft%2Crelationship&offset=0&limit=20&sort_by=created`;
- const currenURI = `https://www.zhihu.com/people/${id}/answers`;
-
- const tmp = [zse83, path, currenURI, d_c0, zst81].join('+');
- const md5 = crypto.createHash('md5');
- const signature = jsencrypt(md5.update(tmp).digest('hex'));
-
- const xzseHeaders = {
- 'x-zse-83': zse83,
- 'x-zse-86': '1.0_' + signature,
- 'x-zst-81': zst81,
+ const headers = {
+ 'User-Agent': 'ZhihuHybrid com.zhihu.android/Futureve/6.59.0 Mozilla/5.0 (Linux; Android 10; GM1900 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/85.0.4183.127 Mobile Safari/537.36',
+ Referer: `https://www.zhihu.com/people/${id}/answers`,
};
const response = await got({
method: 'get',
- url: `https://www.zhihu.com${path}`,
- headers: {
- ...utils.header,
- ...xzseHeaders,
- Referer: `https://www.zhihu.com/people/${id}/answers`,
- cookie: `d_c0=${d_c0}`,
- },
+ url: `https://api.zhihu.com/people/${id}/answers?order_by=created&offset=0&limit=10`,
+ headers: headers,
});
const data = response.data.data;
+ let name = data[0].author.name;
+
+ if (name === '知乎用户') {
+ const info = await got({
+ method: 'get',
+ url: `https://www.zhihu.com/api/v4/members/${id}/activities?limit=1`,
+ headers: {
+ ...utils.header,
+ Referer: `https://www.zhihu.com/people/${id}/activities`,
+ Authorization: 'oauth c3cef7c66a1843f8b3a9e6a1e3160e20', // hard-coded in js
+ },
+ });
+ name = info.data.data[0].actor.name;
+ }
+
+ const items = await Promise.all(
+ data.map(async (item) => {
+ let description;
+ const link = `https://www.zhihu.com/question/${item.question.id}/answer/${item.id}`;
+ const title = item.question.title;
+ try {
+ const detail = await got({
+ method: 'get',
+ url: `https://api.zhihu.com/appview/api/v4/answers/${item.id}?include=content&is_appview=true`,
+ headers: headers,
+ });
+ description = utils.ProcessImage(detail.data.content);
+ } catch (e) {
+ description = `${title}`;
+ }
+ return {
+ title: title,
+ description: description,
+ pubDate: new Date(item.created_time * 1000).toUTCString(),
+ link: link,
+ };
+ })
+ );
ctx.state.data = {
- title: `${data[0].author.name}的知乎回答`,
+ title: `${name}的知乎回答`,
link: `https://www.zhihu.com/people/${id}/answers`,
- description: data[0].author.headline || data[0].author.description,
- item: data.map((item) => ({
- title: item.question.title,
- description: utils.ProcessImage(item.content),
- pubDate: new Date(item.created_time * 1000).toUTCString(),
- link: `https://www.zhihu.com/question/${item.question.id}/answer/${item.id}`,
- })),
+ item: items,
};
};
-
-async function getDC0FromCookies(id) {
- const url = `https://www.zhihu.com/people/${id}`;
- const response = await got({
- method: 'get',
- url,
- headers: {
- ...utils.header,
- },
- });
-
- const targetCookies = (response.headers['set-cookie'] || []).filter((c) => /d_c0=([^;]+)/.test(c));
- const matchResult = (targetCookies[0] || '').match(new RegExp('d_c0=([^;]+)'));
-
- return matchResult[1] || '';
-}
diff --git a/lib/routes/zhihu/pin/people.js b/lib/routes/zhihu/pin/people.js
index ee44bbc16..e36d9cb8b 100644
--- a/lib/routes/zhihu/pin/people.js
+++ b/lib/routes/zhihu/pin/people.js
@@ -8,11 +8,11 @@ module.exports = async (ctx) => {
data: { data },
} = await got({
method: 'get',
- url: `https://www.zhihu.com/api/v4/members/${id}/pins?offset=0&limit=20&includes=data%5B*%5D.upvoted_followees%2Cadmin_closed_comment`,
+ url: `https://api.zhihu.com/pins/${id}/moments?limit=10&offset=0`,
});
ctx.state.data = {
- title: `${data[0].author.name}的知乎想法`,
+ title: `${data[0].target.author.name}的知乎想法`,
link: `https://www.zhihu.com/people/${id}/pins`,
item: generateData(data),
};