lumina37 / aiotieba

贴吧接口合集✨可用于工具箱/吧务管理/数据采集
https://aiotieba.cc
The Unlicense
388 stars 69 forks source link

为什么频繁修改请求客户端接口时指定的`_client_version`(api版本) #64

Closed n0099 closed 1 year ago

n0099 commented 1 year ago
git clone https://github.com/Starry-OvO/aiotieba
git log -L 281,281:aiotieba/client.py | grep -E '(Date|commit|\+    latest)'
commit 507c9224e48a00986a3e1867d9c170353e31e38c
Date:   Mon Dec 19 08:40:55 2022 +0800
+    latest_version: ClassVar[str] = "12.34.1.0"  # 这是目前的最新版本
commit 3ad1bdf725aae62c0b49a67c296eee26afd51ee8
Date:   Sat Dec 3 10:49:49 2022 +0800
+    latest_version: ClassVar[str] = "12.32.5.2"  # 这是目前的最新版本
commit 6019574f5ca27a8894fcecd0d21bfb829751505e
Date:   Fri Nov 25 08:34:36 2022 +0800
+    latest_version: ClassVar[str] = "12.32.5.1"  # 这是目前的最新版本
commit e0a95139ad6f05d2ecc417f926c8dfa804201b9f
Date:   Wed Nov 23 16:35:20 2022 +0800
+    latest_version: ClassVar[str] = "12.32.4.1"  # 这是目前的最新版本
commit 51197f5fd9276d2570bce4c86d6191719bccc162
Date:   Fri Nov 18 10:12:38 2022 +0800
+    latest_version: ClassVar[str] = "12.32.3.0"  # 这是目前的最新版本
commit 4af2e30861b887d4c857e003be7d0829997a460b
Date:   Fri Nov 4 22:26:16 2022 +0800
+    latest_version: ClassVar[str] = "12.31.6.0"  # 这是目前的最新版本
commit 478d006d29c49f7b721398cf33a756b7f2a42f78
Date:   Mon Oct 31 19:49:50 2022 +0800
+    latest_version: ClassVar[str] = "12.31.0.3"  # 这是目前的最新版本
commit 3d70b1638b4609f11f3d02625a13bf261395a454
Date:   Fri Oct 28 22:10:08 2022 +0800
+    latest_version: ClassVar[str] = "12.30.1.0"  # 这是目前的最新版本
commit 3272201302add4532771fca96a2b19e1edad0a8b
Date:   Fri Oct 21 07:45:22 2022 +0800
+    latest_version: ClassVar[str] = "12.30.0.0"  # 这是目前的最新版本
commit 236377a24f31d9e42bdd999ec339908e6cc985dd
Date:   Mon Oct 10 21:52:02 2022 +0800
+    latest_version: ClassVar[str] = "12.29.7.0"  # 这是目前的最新版本
commit 11019a1ec9edb161cb91efc635dcea11ab6f6f58
Date:   Wed Sep 28 08:28:16 2022 +0800
+    latest_version: ClassVar[str] = "12.29.5.0"  # 这是目前的最新版本
commit 715cf1f761ed08be4f17481aa2c84cdfaa43285a
Date:   Sat Sep 24 08:11:49 2022 +0800
+    latest_version: ClassVar[str] = "12.29.4.2"  # 这是目前的最新版本
commit b7cd81baed96360019b10e96bfacc4692578bb53
Date:   Fri Sep 23 07:52:26 2022 +0800
+    latest_version: ClassVar[str] = "12.29.4.1"  # 这是目前的最新版本
commit b403d1f5cfede874bba20f623694efbb98e7f8f4
Date:   Sun Sep 18 07:51:51 2022 +0800
+    latest_version: ClassVar[str] = "12.29.1.1"  # 这是目前的最新版本
commit 1e468fa92df1c9dded4695e57f44b07393f03c35
Date:   Fri Sep 9 19:04:58 2022 +0800
+    latest_version: ClassVar[str] = "12.29.0.1"  # 这是目前的最新版本
commit 90549f37a9f70b20f90e6c96414adac0e29c80f2
Date:   Wed Sep 7 11:00:20 2022 +0800
+    latest_version: ClassVar[str] = "12.28.1.1"  # 这是目前的最新版本
commit 204669c129ec1ce67e200b5a74b2a32fcae6d153
Date:   Wed Aug 31 10:53:02 2022 +0800
+    latest_version: ClassVar[str] = "12.28.1.0"  # 这是目前的最新版本
commit 47e68aecdb0bc66e0cfc502911e34d6233742974
Date:   Sat Aug 27 19:56:27 2022 +0800
+    latest_version: ClassVar[str] = "12.28.0.0"  # 这是目前的最新版本
commit f74e5764e6f1a6ae69b48b45b6d234605a65ea58
Date:   Fri Aug 19 19:41:24 2022 +0800
+    latest_version: ClassVar[str] = "12.27.5.0"  # 这是目前的最新版本
commit fad36a7632d50c9cf47f67085f306eff86b42e38
Date:   Thu Aug 18 22:28:26 2022 +0800
+    latest_version: ClassVar[str] = "12.27.4.2"  # 这是目前的最新版本
commit 2aa0c56c4cb48f68b78d81772093a4ea2c0c03ac
Date:   Tue Aug 16 22:32:46 2022 +0800
+    latest_version: ClassVar[str] = "12.27.4.1"  # 这是目前的最新版本
commit 6ef184f5078b797603916fb4c7c2b1c23fde8150
Date:   Fri Aug 12 22:11:40 2022 +0800
+    latest_version: ClassVar[str] = "12.27.1.1"  # 这是目前的最新版本
commit 5bd6ebf459673e35ca44bf385bb94892146a6a64
Date:   Wed Aug 10 16:11:31 2022 +0800
+    latest_version: ClassVar[str] = "12.27.1.0"  # 这是目前的最新版本
commit dfd9b122406931377dffe9bc69e29b2c277a3cb7
Date:   Mon Aug 8 16:58:57 2022 +0800
+    latest_version: ClassVar[str] = "12.27.0.2"  # 这是目前的最新版本
commit b1a684c730cfd1e5dcc19b097c9951e7a6677c27
Date:   Thu Aug 4 12:12:39 2022 +0800
+    latest_version: ClassVar[str] = "12.26.4.3"  # 这是目前的最新版本
commit 49a0e17b86b0ff44d5d7386241a2da7a39cf45d8
Date:   Sun Jul 24 16:12:56 2022 +0800
+    latest_version: ClassVar[str] = "12.26.4.2"  # 这是目前的最新版本
commit f7cd6fb1d209befae9920e87855ae6745f7b39dd
Date:   Sat Jul 23 21:59:45 2022 +0800
+    latest_version: ClassVar[str] = "12.26.4.1"  # 这是目前的最新版本
commit b13f5c2ead6dc1b52f69a8fcd6cb4c29cbe9a754
Date:   Fri Jul 15 22:47:28 2022 +0800
+    latest_version: ClassVar[str] = "12.26.1.0"  # 这是目前的最新版本
commit fd99cc7a7f511731f0dc2c6a3ad6a6ddcfa9d113
Date:   Sun Jul 3 22:10:40 2022 +0800
+    latest_version: ClassVar[str] = "12.25.5.0"  # 这是目前的最新版本
commit 1cbf476555b8a1e43cf1e3190b766e51455245a7
Date:   Sun Jun 19 23:46:30 2022 +0800
+    latest_version: ClassVar[str] = "12.25.4.3"  # 这是目前的最新版本
commit 65111a3436aac6182d32260de4d76fa47c519824
Date:   Thu Jun 9 22:59:31 2022 +0800
+    latest_version: ClassVar[str] = "12.25.1.0"  # 这是目前的最新版本
commit db6a5c8a18b01dea3f34a724dc11ddec5bcee81d
Date:   Mon May 30 22:11:15 2022 +0800
+    latest_version: ClassVar[str] = "12.25.0.2"  # 这是目前的最新版本
commit 9ff799490039b790e28d8f17a3545a1dcd7ded40
Date:   Fri May 27 23:09:41 2022 +0800
+    latest_version: ClassVar[str] = "12.24.4.0"  # 这是目前的最新版本

在 9ff799490039b790e28d8f17a3545a1dcd7ded40 之前版本号分散在tiebaBrowser/_api.py的各个api封装函数中:

git checkout 9ff799490039b790e28d8f17a3545a1dcd7ded40~1
git log -L 774,2705:tiebaBrowser/_api.py | grep -E '^(Date|commit|\+.*version)'
commit 8c6500fe7806d33678930c347b9f425c9fe863d0
Date:   Fri May 27 19:38:22 2022 +0800
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
+                ('_client_version', '12.12.1.0'),
commit 90569c4642692659f892b90d823e29ba9e7f0792
Date:   Fri May 27 15:05:48 2022 +0800
commit f382b75a9c3747b50dd511026fca8d2e1bd80dc5
Date:   Fri May 27 01:28:15 2022 +0800
commit ac852e5a96e5d3e61d1b6e6d28999f2a5e2fa2d3
Date:   Thu May 26 21:30:27 2022 +0800
commit 4c9d5dfcd699e07889213ec16095696c4ab60a88
Date:   Thu May 26 21:22:12 2022 +0800
commit 8b364bced45a36eeb3770f656f8cfa4d45557178
Date:   Thu May 26 20:59:30 2022 +0800
commit 2a99e9d56b3f8c36be78d03b05fca34d5ae8b65f
Date:   Thu May 26 16:47:50 2022 +0800
commit c5c208f002cf1038acbd324c687f037cf5963008
Date:   Thu May 26 13:09:03 2022 +0800
commit 842b725e5c0053b514c5b351b7f1caa913547eb8
Date:   Thu May 26 12:57:23 2022 +0800
+        common_proto._client_version = '12.12.1.0'
commit a7534ef2729cec0328de7da80a32d006268efb1d
Date:   Tue May 24 18:26:45 2022 +0800
commit 3d9e657a1c6ae200ef52e65c2964f9119104d119
Date:   Mon May 23 02:04:29 2022 +0800
+        common_proto._client_version = '12.12.1.0'
+        common_proto._client_version = '12.12.1.0'
+        common_proto._client_version = '12.12.1.0'
+        common_proto._client_version = '12.12.1.0'
+        common_proto._client_version = '12.12.1.0'
+        common_proto._client_version = '12.12.1.0'
commit 2d89e639e957f198ac1e73f591e05e070f3072bd
Date:   Mon May 16 19:07:15 2022 +0800
commit 7cd8ec5c29205599dbc4cf25d9752158b632910a
Date:   Mon May 16 17:25:15 2022 +0800
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),  # 删除该字段会导致post_list和dynamic_list为空
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),  # 删除该字段可直接获取前200个吧,但无法翻页
+            ('page_no', pn),  # 加入client_version后,使用该字段控制页数
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
+            ('_client_version', '12.12.1.0'),
commit e0cc14dc94ecb21eafc359897ff803447e348d9c
Date:   Sat May 14 17:30:58 2022 +0800
commit fe4bd8e39aac7d8dc80f28d17e19806a370c6f42
Date:   Sun May 8 00:59:04 2022 +0800
+            '_client_version': '12.12.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+            'page_no': pn,  # 加入client_version后,使用该字段控制页数
commit bae28cb6c6c95e3b07d82759d0713661214ab5b1
Date:   Sat May 7 14:38:04 2022 +0800
commit fde137a6cac56268ab9e829a1a1ea0f3c5799d74
Date:   Sat May 7 10:31:06 2022 +0800
+            '_client_version': '12.12.1.0',
commit dea5c86b2b5f75a59bd05e3a2d10911a6638f5cf
Date:   Sun May 1 22:09:57 2022 +0800
commit 68df1e4d4cffd3879232ba92bcb785eefd1f5c31
Date:   Wed Apr 27 18:18:27 2022 +0800
commit 1bb8ac7a96ccc222075d4fead68aa87bb4d51f43
Date:   Fri Apr 22 23:49:14 2022 +0800
commit 898492086df8d81d405db9f41d17018023a799dd
Date:   Thu Apr 21 22:20:57 2022 +0800
commit ae295d2c153f548c67575eec24ae29c65fea31be
Date:   Tue Apr 19 16:49:42 2022 +0800
commit 47b691568d9318ebfb5a6c554bd1900a2c6f6e0b
Date:   Tue Apr 19 13:19:12 2022 +0800
+                'page_no': _pn,  # 加入client_version后,使用该字段控制页数
commit a80ef7506a8b21a49ff709538e2d680695138ea9
Date:   Mon Apr 18 18:36:43 2022 +0800
+        common._client_version = '12.12.1.0'
commit b0b14a9f70cc0d2ba16d8e6b62618944fdf9ef54
Date:   Mon Apr 18 18:35:19 2022 +0800
+        common._client_version = '12.12.1.0'
+        common._client_version = '12.12.1.0'
+            '_client_version': '12.12.1.0',
+            '_client_version': '12.12.1.0',
+        common._client_version = '12.12.1.0'
+        payload = {'BDUSS': self.sessions.BDUSS, '_client_version': '12.12.1.0'}
+            '_client_version': '12.12.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+            '_client_version': '12.12.1.0',
+                '_client_version': '12.12.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+        common._client_version = '12.12.1.0'
+        common._client_version = '12.12.1.0'
+            '_client_version': '12.12.1.0',
+            '_client_version': '12.12.1.0',
+            '_client_version': '12.12.1.0',
commit 704577bd84752a4934db97c5db57da22db8bfb1d
Date:   Sun Apr 17 14:01:01 2022 +0800
commit fa2afdce0e5aa0655429424f134fce6f8a2b6b51
Date:   Thu Apr 14 23:32:57 2022 +0800
commit a2eae0121492e79db8f426f1f39a5355abbaeadc
Date:   Tue Apr 12 15:57:04 2022 +0800
commit dfd30bf5602b9f8df282c19bd039f9f6a16a4349
Date:   Sun Apr 10 23:10:39 2022 +0800
commit e5986e055b01b9e01c553b825aaa88d6d8f9a568
Date:   Sun Apr 10 23:01:59 2022 +0800
commit 126bc00d365c3de315b64a657482a4bb27b462a7
Date:   Sat Apr 9 22:38:03 2022 +0800
+            '_client_version': '12.23.1.0',
+            '_client_version': '12.23.1.0',
+        payload = {'BDUSS': self.sessions.BDUSS, '_client_version': '12.23.1.0'}
+            '_client_version': '12.23.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+            '_client_version': '12.23.1.0',
+                '_client_version': '12.23.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+                'page_no': _pn  # 加入client_version后,使用该字段控制页数
+            '_client_version': '12.23.1.0',
+            '_client_version': '12.23.1.0',
+            '_client_version': '12.23.1.0',
commit 751eabda9d97f70b81090738e87b3e4028e4c717
Date:   Sat Apr 9 21:53:07 2022 +0800
+                       'page_no': _pn  # 加入client_version后,使用该字段控制页数
commit 6a2d1bbd2aed6162d641f36c3a417280d1651a90
Date:   Sat Apr 9 19:27:44 2022 +0800
commit 6d275e6b5898d22286d06be7bceda7c7cfddd710
Date:   Fri Apr 8 21:53:46 2022 +0800
+        common._client_version = '12.23.1.0'
+        common._client_version = '12.23.1.0'
+        common._client_version = '12.23.1.0'
+                   '_client_version': '12.23.1.0',
+        payload = {'_client_version': '12.23.1.0',
+        common._client_version = '12.23.1.0'
+                   '_client_version': '12.23.1.0'
+                   '_client_version': '12.23.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+        payload = {'_client_version': '12.23.1.0',
+                       '_client_version': '12.23.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+        common._client_version = '12.23.1.0'
+        common._client_version = '12.23.1.0'
+                   '_client_version': '12.23.1.0',
+                   '_client_version': '12.23.1.0',
+                   '_client_version': '12.23.1.0',
commit d20cd11bc9e66ab3dc96b50f37ad27d2df3f2891
Date:   Tue Apr 5 22:10:36 2022 +0800
+        payload = {'_client_version': '12.23.0.1',
commit 93738095f323e292fac0d58664d425eba12f2df4
Date:   Sun Apr 3 14:40:13 2022 +0800
+        common._client_version = '12.23.0.1'
+        common._client_version = '12.23.0.1'
+        common._client_version = '12.23.0.1'
+                   '_client_version': '12.23.0.1',
+        payload = {'_client_version': '12.23.0.1',
+        common._client_version = '12.23.0.1'
+                   '_client_version': '12.23.0.1'
+                   '_client_version': '12.23.0.1',  # 删除该字段会导致post_list和dynamic_list为空
+                       '_client_version': '12.23.0.1',  # 删除该字段可直接获取前200个吧,但无法翻页
+        common._client_version = '12.23.0.1'
+        common._client_version = '12.23.0.1'
+                   '_client_version': '12.23.0.1',
+                   '_client_version': '12.23.0.1',
+                   '_client_version': '12.23.0.1',
commit 9705aa0eabbeeab99e6d16ca7a2206233595c106
Date:   Fri Apr 1 22:42:36 2022 +0800
commit 54dba2ed3d928ee52ed2b8c974bf63749b979a28
Date:   Thu Mar 31 00:01:42 2022 +0800
commit 8eebfe61e19938a8a10224831052e50001ac260e
Date:   Wed Mar 30 17:31:31 2022 +0800
commit a0a20f569d38792c82aa2ce201882ccfe90d3906
Date:   Tue Mar 29 12:48:05 2022 +0800
+        common._client_version = '12.22.1.0'
commit bd25281beed23c1460ca0a47b19906bfd1f634aa
Date:   Tue Mar 29 00:39:49 2022 +0800
commit 113d254fabeedf374fc28814b35f85f38028bf36
Date:   Tue Mar 29 00:07:19 2022 +0800
+                   '_client_version': '12.22.1.0',
commit 95419d98d8aa3d153be48ca1b696079276d311a5
Date:   Mon Mar 28 00:18:15 2022 +0800
commit c7ac6cbd9f95776260bf40b6a9a0c2f7dc600919
Date:   Sat Mar 26 19:08:02 2022 +0800
commit 8da7cba159f28fca489a801d96d1783011e7bde2
Date:   Sat Mar 26 13:50:54 2022 +0800
+                   '_client_version': '12.22.1.0',
commit b887e670dba0323b54e6ca4955962778bd34c3a9
Date:   Fri Mar 25 18:35:03 2022 +0800
commit e0e07b6c3dc9e47ea423e52970a73d5a2db5a82a
Date:   Thu Mar 24 21:25:16 2022 +0800
commit 1161d99098eebc96c49cf1270d84fa7b03e6f9ed
Date:   Thu Mar 24 15:15:25 2022 +0800
commit 998bd8f7d74d442ff455df049f3bd9b7d9503c30
Date:   Thu Mar 24 13:45:07 2022 +0800
commit f598a11e14d5e791cfa26914d33623bc6fc2ebb4
Date:   Thu Mar 24 01:20:15 2022 +0800
+        common._client_version = '12.22.1.0'
+        common._client_version = '12.22.1.0'
+        common._client_version = '12.22.1.0'
+                   '_client_version': '12.22.1.0',
+        payload = {'_client_version': '12.22.1.0',
+                   '_client_version': '12.22.1.0'
+                   '_client_version': '12.22.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+                       '_client_version': '12.22.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+        common._client_version = '12.22.1.0'
+        common._client_version = '12.22.1.0'
+                       '_client_version': '12.22.1.0',
+                   '_client_version': '12.22.1.0',
commit ad2dc30c0f78937abe19d337d4e8d22ad3ac6cd0
Date:   Wed Mar 23 19:50:06 2022 +0800
commit fc990750c11f47ab7f9f3245e057e8b201506083
Date:   Wed Mar 23 19:19:41 2022 +0800
commit c003d610f48ffaafa0396df216ccf114efa64f78
Date:   Wed Mar 23 12:56:11 2022 +0800
commit 922bc4cef0480fa3c334681448fe7181bf991330
Date:   Wed Mar 23 12:46:31 2022 +0800
+        common._client_version = '12.22.0.3'
commit 87b4d65dee2509a04268081e26d257b486ae953f
Date:   Tue Mar 22 23:24:28 2022 +0800
commit 63cb1aaca5be11fa4cdcc5188bd35f592614f73d
Date:   Tue Mar 22 00:59:21 2022 +0800
+        common._client_version = '12.22.0.3'
+        common._client_version = '12.22.0.3'
+        common._client_version = '12.22.0.3'
+                   '_client_version': '12.22.0.3',
+        payload = {'_client_version': '12.22.0.3',
+                   '_client_version': '12.22.0.3'
+                   '_client_version': '12.22.0.3',  # 删除该字段会导致post_list和dynamic_list为空
+                       '_client_version': '12.22.0.3',  # 删除该字段可直接获取前200个吧,但无法翻页
+        common._client_version = '12.22.0.3'
+                       '_client_version': '12.22.0.3',
+                   '_client_version': '12.22.0.3',
commit caf9ba9a743f83c023c7f8b54d016dff92f89385
Date:   Sun Mar 20 19:18:07 2022 +0800
commit 7913072b44237e8d451855cb7046fab65ea4cc79
Date:   Sun Mar 20 13:58:46 2022 +0800
commit 49914126375d73891aa21f3d65aa606b4401a784
Date:   Sun Mar 20 10:54:15 2022 +0800
commit f22d2f6273ec437b51e17d0767c3e4a0faa435f4
Date:   Sun Mar 20 10:37:31 2022 +0800
commit 4d81a753a099a69ddccce647c4bfbed53aaef2de
Date:   Sun Mar 20 00:57:25 2022 +0800
+                       '_client_version': '12.21.1.0',
+                   '_client_version': '12.21.1.0',
commit 934b715676709f1675210d640a0a9828ba1ac487
Date:   Sat Mar 19 17:17:04 2022 +0800
commit 9f3b09873c3f1227708c27dc21d05b941d02ebda
Date:   Sat Mar 19 10:27:02 2022 +0800
commit 4795229746756e400ae85a429cd6a26368151379
Date:   Fri Mar 18 21:18:05 2022 +0800
commit b8e4e614084bb40da98da4b4289db362c1441e62
Date:   Fri Mar 18 14:44:28 2022 +0800
+                   '_client_version': '12.21.1.0'
commit 736691f9b01324b8febd1e0c460c90b8ccc1f67c
Date:   Fri Mar 18 11:00:29 2022 +0800
commit a0f1e2e0ee73878ad0bd7b01ce4ac5916ef5ca80
Date:   Fri Mar 18 00:28:12 2022 +0800
commit f332f0a8fe4b1819f8de55e25f3ce95d0d9df104
Date:   Thu Mar 17 22:21:22 2022 +0800
commit 0f6856937721a328e001e96478ec464beeac1889
Date:   Thu Mar 17 14:18:30 2022 +0800
+                   '_client_version': '12.21.1.0',
+        common._client_version = '12.21.1.0'
commit a46dd2e2150fe055682dd93f9b9b07eddac75888
Date:   Thu Mar 17 11:26:22 2022 +0800
+            common._client_version = '12.21.1.0'
+                       '_client_version': '12.21.1.0',
commit 8beb92800d0fddba3de9e173846a73637a3427c9
Date:   Thu Mar 17 00:02:05 2022 +0800
+        common._client_version = '12.21.1.0'
+        common._client_version = '12.21.1.0'
+        common._client_version = '12.21.1.0'
+        payload = {'_client_version': '12.21.1.0',
+                   '_client_version': '12.21.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+                       '_client_version': '12.21.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
commit 3bccebd1750d9c04572655d834362aa67eef11c7
Date:   Wed Mar 16 20:59:27 2022 +0800
commit c960e0c1c56e3250995cc3e98ebba42df2f0213c
Date:   Wed Mar 16 20:48:10 2022 +0800
+        common._client_version = '9.1.0.0'
+        common._client_version = '9.1.0.0'
commit a35030f1a201018a593c452dd7193623cc30e0e4
Date:   Wed Mar 16 18:45:56 2022 +0800
+        common._client_version = '9.1.0.0'
+        payload = {'_client_version': '9.1.0.0',
+        payload = {'_client_version': '9.1.0.0',
+        payload = {'_client_version': '9.1.0.0',
commit ad32fa9232c6b25a9de5dc23312b30ead93e6d3d
Date:   Fri Mar 11 23:43:10 2022 +0800
commit 9437c659e7098b9c76341e442121e3621ceb55ad
Date:   Fri Mar 4 15:34:09 2022 +0800
commit f1e8f171bd231135aad29de06fc98e9f97020a06
Date:   Wed Mar 2 10:31:19 2022 +0800
commit c9fb7979947f3379f3e3948d197ea3bd3bdd429f
Date:   Mon Feb 28 15:03:53 2022 +0800
commit ee4be02b2f53b82bfda71cb3f6d65e0222834654
Date:   Mon Feb 28 12:47:50 2022 +0800
commit 0c4ea8710e13235a8052a9bad4b921d297db8922
Date:   Fri Feb 25 20:46:54 2022 +0800
commit d1f2f832e5d5278d3e92c02bb00f3739b01934cb
Date:   Fri Feb 25 16:16:15 2022 +0800
commit cdbf0e4662cc92ca09e0d543e784cebc2a181acf
Date:   Thu Feb 24 19:52:50 2022 +0800
commit 45db46ada57e1220690e27483322d77ed81d1bba
Date:   Thu Feb 24 18:42:01 2022 +0800
commit 00f9cba49edfb1c61a4f21c2b686ed4454a83204
Date:   Thu Feb 24 17:03:27 2022 +0800
commit 18a961d8330bbf099e5c2b388957012c9ad6cf0d
Date:   Thu Feb 24 00:27:39 2022 +0800
commit e2d4829cf98186b0d54d71d7ed2c68dab11a8bd3
Date:   Wed Feb 23 10:33:34 2022 +0800
+        payload = {'_client_version': '12.20.0.3',
+        payload = {'_client_version': '12.20.0.3',
commit ae3ea4244ae1b33cb9bec3eb938dfecbebf1c674
Date:   Mon Feb 21 17:31:40 2022 +0800
commit 7066365d3184b683afb70cbe05b96732a4e51072
Date:   Mon Feb 14 19:46:04 2022 +0800
commit edc9e1418a293dd5c00949a84f958d363946212e
Date:   Thu Feb 10 13:05:10 2022 +0800
commit eb0fa33b661d1918cf2fe1acc49be420f874c2d7
Date:   Tue Feb 8 14:15:04 2022 +0800
+        payload = {'_client_version': '12.19.1.0',
commit 41cb8cd25980085bb67e4848c2c2eaa15392e015
Date:   Wed Feb 2 11:28:05 2022 +0800
commit 271bb8a278f0c89bade316ce686f45e1d00580b7
Date:   Wed Feb 2 00:52:16 2022 +0800
commit 14fa06735f673f3fb3dbfbd79a1eb5282169ae77
Date:   Tue Feb 1 12:53:08 2022 +0800
+        payload = {'_client_version': '12.19.1.0',
+                       '_client_version': '12.19.1.0',  # 删除该字段可直接获取前200个吧,但无法翻页
+                       'page_no': pn  # 加入client_version后,使用该字段控制页数
commit 5b4fe134d74e9354ca2b9f4eef061d07dbb6a581
Date:   Sun Jan 30 16:52:15 2022 +0800
commit 7884a37b16553bbddad948317da9911de8fe4dca
Date:   Sun Jan 30 15:06:54 2022 +0800
commit c3c8fa73b489c50bfb51ee73284de38effdfe096
Date:   Sat Jan 29 20:23:49 2022 +0800
commit e73779c9a09407ff2f02ffb4d5bdac216e104c82
Date:   Sat Jan 29 19:55:24 2022 +0800
commit c956f81250e51d6714fbc978be56a92720793297
Date:   Sat Jan 29 11:46:21 2022 +0800
commit 57dc3e137c2cf5a774368a991a192797614d2d87
Date:   Sat Jan 29 11:36:06 2022 +0800
commit 09b88e5da8cfc7a8efa4055926c8964d27eeaba0
Date:   Sat Jan 29 11:23:31 2022 +0800
+                   '_client_version': '12.19.1.0',  # 删除该字段会导致post_list和dynamic_list为空
+                   # '_client_version':'12.19.1.0',  # 添加该字段可以查看共同关注,删除该字段以提升解析性能
commit 5c8fb72481dc9fe28db4cae2ddfca9498a0d845d
Date:   Sat Jan 29 11:09:28 2022 +0800
+        payload = {'_client_version': '7.9.2',  # 因新版app使用file传参,改动此处的版本号可能导致列表为空!
+        payload = {'_client_version': '7.9.2',  # 因新版app使用file传参,改动此处的版本号可能导致列表为空!
+        payload = {'_client_version': '7.9.2',  # 因新版app使用file传参,改动此处的版本号可能导致列表为空!
+                   '_client_version': '12.5.6.0',  # 删除该字段会导致post_list和dynamic_list为空
+                   # '_client_version':'12.5.6.0',  # 添加该字段可以查看共同关注,删除该字段以提升解析性能
+                   # 'page_no': 1  # 加入client_version后会限制每页数量,使用该字段控制页数
commit fe1e132c51d4c96aaa025c5cbe71b2834314456b
Date:   Fri Jan 28 20:34:01 2022 +0800
commit 3e837eda3a838249b48c652bf56cd4a1b5f9ab20
Date:   Fri Jan 28 20:30:52 2022 +0800
+                   '_client_version': '7.9.2',
commit 3a7f25e481e31e80e2f7d0e02a73cf0508174e62
Date:   Fri Jan 28 17:37:08 2022 +0800
commit 63191f8bd66756bb592c34af7198d5120a46cc5e
Date:   Fri Jan 28 16:22:01 2022 +0800
commit c794578767968c38d8de6983eccaf2a1f97c123b
Date:   Fri Jan 28 13:30:04 2022 +0800
commit 30b92193d3c52af9a8dc88e8148bd1dabf638e3a
Date:   Thu Jan 27 23:31:57 2022 +0800
commit 2cc0c047e211e81a0eccaa02077169571a4bd6fa
Date:   Thu Jan 27 22:27:53 2022 +0800
commit b7b034113013ff27ba3669002608dfbf244b121e
Date:   Sat Oct 9 11:25:41 2021 +0800
commit c11d0e27809b107375fdfba37ef9ce58058d2957
Date:   Sat Sep 18 09:12:33 2021 +0800
commit 0db113ad947ac88defe8a095e89324081045f513
Date:   Fri Sep 17 21:34:21 2021 +0800
+        payload = {'_client_version': '7.9.2',
+        payload = {'_client_version': '7.9.2',
+        payload = {'_client_version': '7.9.2',
+                       '_client_version': '7.9.2',
+                   '_client_version': '7.9.2',
+                   '_client_version': '7.9.2',
+                   '_client_version': '7.9.2',
+                   '_client_version': '7.9.2',
commit 18c532f03e2f60625649c78f96a49c221cf70d00
Date:   Fri Sep 17 11:53:01 2021 +0800
commit 211313818079febd73c0067fcbfbf1061431feef
Date:   Fri Sep 17 09:23:40 2021 +0800
+        payload = {'_client_version': '12.10.1.0',
+        payload = {'_client_version': '12.10.1.0',
+        payload = {'_client_version': '12.10.1.0',
+                       '_client_version': '12.10.1.0',
+                   '_client_version': '12.10.1.0',
+                   '_client_version': '12.10.1.0',
+                   '_client_version': '12.10.1.0',
+                   '_client_version': '12.10.1.0',
commit 75d8c843b7d07fff9b2e49e71e9b1039246755ed
Date:   Thu Sep 16 19:31:50 2021 +0800
commit 20b7c2962165490986625bfb4269415d5f316355
Date:   Thu Sep 16 00:22:12 2021 +0800
commit a40156f2c295d7a0aa1af95aadd8940244e8fab6
Date:   Wed Sep 15 23:46:44 2021 +0800
commit 3f2bedc902c5f6e28e66a4b48ddd1f69e3258df7
Date:   Fri Sep 3 23:17:00 2021 +0800
commit bf0118dacfc55e92b2c5e0926107cc67044f2f48
Date:   Fri Sep 3 23:01:31 2021 +0800
commit 91020f7ceb3f8504bbf6afc7061e9b1bfc5c4ff8
Date:   Thu Aug 19 14:15:43 2021 +0800
+        payload = {'_client_version': '12.8.2.1',
+        payload = {'_client_version': '12.8.2.1',
+        payload = {'_client_version': '12.8.2.1',
+                       '_client_version': '12.8.2.1',
+                   '_client_version': '12.8.2.1',
+                   '_client_version': '12.8.2.1',
+                   '_client_version': '12.8.2.1',
+                   '_client_version': '12.8.2.1',
commit ffd1ef8cebf234a68b5455b5d1ccb328ba0b6942
Date:   Mon Aug 16 22:44:43 2021 +0800
commit 8454e41f98480eebae3a6001dd7374521a189a20
Date:   Sat Aug 14 20:35:22 2021 +0800
+        payload = {'_client_version': '12.7.5.3',
commit 93a0548823bcd41e36e1bc6edee654caf326493b
Date:   Sun Jul 25 21:39:43 2021 +0800
+                   '_client_version': '12.7.5.3',
+        payload = {'_client_version': '12.7.5.3',
+        payload = {'_client_version': '12.7.5.3',
+                       '_client_version': '12.7.5.3',
+                   '_client_version': '12.7.5.3',
+                   '_client_version': '12.7.5.3',
+                   '_client_version': '12.7.5.3',
+                   '_client_version': '12.7.5.3',
commit 54d5b0b0c1702c76023c69a890c14fd87a82c895
Date:   Fri Jul 23 20:33:27 2021 +0800
commit 4ec658936a18f1718ff05ee921f94f72faf54de1
Date:   Tue Jul 20 15:25:25 2021 +0800
commit 6fa4c736d1155687c823c4c9d202a7baeef69007
Date:   Sun Jul 11 09:37:08 2021 +0800
commit 46f6fa70521a7217a24d39806c4e36e378d584ed
Date:   Tue Jul 6 09:58:18 2021 +0800
commit c26ac37c683875bf775760796883530a7ffc2577
Date:   Sun Jul 4 11:51:16 2021 +0800
+                   '_client_version': '12.6.3.0',
+        payload = {'_client_version': '12.6.3.0',
+        payload = {'_client_version': '12.6.3.0',
+                       '_client_version': '12.6.3.0',
+                   '_client_version': '12.6.3.0',
+                   '_client_version': '12.6.3.0',
+                   '_client_version': '12.6.3.0',
commit 08e32aa370159b171ac439023ff27cadeb1c2598
Date:   Thu Jun 3 21:10:11 2021 +0800
commit ce68db8a337505597690d4b35508e8f548e8e508
Date:   Wed Jun 2 10:23:42 2021 +0800
commit e121ca04c6e1555503821784002110e4fe937c93
Date:   Wed May 26 12:14:53 2021 +0800
commit 1f42ed4f983fe83a21d650bcea526d04acefcd70
Date:   Thu May 6 09:57:09 2021 +0800
commit ea25b27628d4c1f38c0112f94e026dd55966c1d4
Date:   Wed May 5 20:12:27 2021 +0800
+                   '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
+                       '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
+                   '_client_version': '12.4.8.23',
n0099 commented 1 year ago

而最近两周贴吧分布式后端暗改tbm所使用的protobuf格式接口中的两个的返回结构完全违背了请求中的_client_version common参数用作api versioning的约定:

frs/page(吧-主题帖接口):29号

  1. 每个主题帖的楼主用户元数据被从/.data.userlist(json是/.user_list)移到了每个主题帖下的author/.data.threadlist[].author,json是/.thread_list[].author)中并删除了authorid的值,也就是跟回复贴-楼中楼接口(pb/floor)或_client_version为8.x及之前时返回的结构一样: https://github.com/n0099/TiebaMonitor/commit/32168f6abbc772df8c1396239c07e31f0983c4ac
  2. 还顺便把最后出现在_client_version=6.0.2(14年的远古客户端)时的threadlist[].lastreplyer(主题帖最后回复人)给带了回来: https://github.com/n0099/TiebaMonitor/commit/8c3ea0354e599792ed5915036afccdd4139065ef#diff-0947e0e56103d7012ac23772c8f07097420782c255ae0fd119fced7493af2d2fR56
  3. 删除了threadlist[].firstpostid(主题帖第一楼的pid)的值,导致我不得不额外请求_client_version=8.8.8.8(具体版本号是什么无所谓,因为json api的返回结构并没有引入这些breaking changes,除了下文提到的一处)的老json api: https://github.com/n0099/TiebaMonitor/commit/42b3c800cfe3eabca6dbb39ef313e716af7d3034 tbm通过记录firstpostid和_abstruct(主题帖1L内容中的纯文本(type=0)和图片(type=3),本质PbContent的精简形式)的值可以尝试挽回发表后很快(从请求frs/page到对该主题帖请求pb/page的时间差之间)就被删(楼主自/吧务删/系统吞)的主题帖1L信息: https://github.com/n0099/TiebaMonitor/commit/076fafb0610d8075f18a25aa93a0fe6efbe041f3#diff-770e303757a304daabbcce0ae0707dd709089f526f3f83e07cdb0f0cc46f73edR133
  4. json格式的这个接口中有一个遗留的冗余父主题帖元数据嵌套于/.thread.thread_info/.thread本身就是回复贴的父主题帖元数据)中,他有一个phone_type,其值跟在贴吧网页端上才能看到的每个回复贴楼主使用的发帖设备(来自Android/iPhone/Windows Phone/Windows 8 UWP客户端,也就是经典发帖接口的_client_type字段值: https://github.com/MoeNetwork/wmzz_post/blob/4752b09ea53064be6a8f9b2cba842fa081ec75cc/wmzz_post_cron.php#L16 https://github.com/MoeNetwork/wmzz_post/blob/80aba25de46f5b2cb1a15aa2a69b527a7374ffa9/wmzz_post_setting.php#L64 ,以及更加远古的来自百度相册)相同(android iphone),但由于请求的不是pb/page(其也没有提供这样的phone_type信息,除非我去额外请求网页端html然后解析贴吧前端每天都在改的dom结构)所以无法获得每层楼的发帖设备。而未知时间节点后贴吧灰度删除了这个冗余的/.thread.thread_infohttps://github.com/n0099/TiebaMonitor/blob/8b6f7a179f030726c9810a372403846ba5562ebf/crawler/src/Tieba/Crawl/ThreadLateCrawlerAndSaver.cs#L77

pb/page(主题帖-回复贴接口):30号

  1. 可能贴吧后端在看到暗改吧-主题帖接口后没有给客户端造成太大影响(贴吧意见反馈吧没什么动静,可能客户端版本8.x时早就写好了对两套结构的兼容),就又在主题帖-回复贴接口上应用了相同的逻辑:删除userlistreply.authorid并把每个层主的用户元数据放进每个reply下,并且还是灰度发布(随机返回修改后或之前的结构)的,导致我不得不同时保留对两种结构的处理并回退: https://github.com/n0099/TiebaMonitor/commit/0e7d15bcb188da781055a573c899acfb97eacd50

portrait用户头像图片url末尾的?t=强制cache miss querystring param的时间戳值漂移:未知时间节点

  1. userlist[].portrait是一个url字符串,例如 https://gss0.baidu.com/7Ls0a8Sm2Q5IlBGlnYG/sys/portraith/item/tb.1.fe425d3d.zv_7dovVrqzjOUwoT5oZVw?t=1663407014 末尾的?t= querystring param的用途是强制让user agent(浏览器或贴吧客户端,如果后者有实现http缓存层)此前对这个get请求的缓存失效从而保证请求一次服务端gss0.baidu.com然后再根据response header中的Cache-Control值来决定是否如何缓存: https://stackoverflow.com/questions/83990/is-it-the-filename-or-the-whole-url-used-as-a-key-in-browser-caches 这种hash based cache-control在cdn运维人眼中很常见,典型例子是使用wordpress的enqueue_style/script api添加的css/js资源可以指定一个?v=的querystring param: https://wordpress.stackexchange.com/questions/183669/prevent-version-url-parameter-ver-x-x-x-on-enqueued-styles-scripts 或是现代前端娱乐圈中的webpack hash,其选择直接将mutatable部分放进文件名而不是url querystring: https://stackoverflow.com/questions/35176489/what-is-the-purpose-of-webpack-hash-and-chunkhash https://github.com/n0099/TiebaMonitor/commit/f72fe89e30d06159934a6fd557773cd62bcde88e 贴吧对这个?t=的取值是用户最后上传头像的unix时间戳,这样只要用户上传更新了自己的头像,接口返回的url变得不同就可以强迫UA绕过本地缓存,但请注意只通过这个url endpoint是无法获得历史头像的(修改?t=的值到过去不会给您返回当时使用的历史头像) 而我注意到请求相同的贴吧cdn ip所返回的这个url的?t=值可能会偏差1~3秒,比如某用户最近只在1672471655时更新了一次头像,但?t=值可能会是正确的1672471655,或是16724716561672471654 我怀疑贴吧分布式微服务后端体系架构中某些服务器节点的系统时间可能太久没有通过NTP之类的协议进行对时了

总结

贴吧最近这段时间的一通breaking暗改(我知道的也只是tbm中所用到的3个接口的6/7个参数排列组合)不知道会破坏多少年久失修无人问津但可能还有贴吧遗民在用的贴吧生态工具:

其中13~17年在bug吧firefox吧chrome吧活跃的人们十分流行开发这些userscript和浏览器扩展

人生自古谁无死,不幸地,贴吧助手与助手版贴吧作者已关闭他提供付费增值服务(主要是可以对同样使用贴吧助手的人设置头像框下的称呼文本框内容,相当于后来14年贴吧会员卖的个性铭牌)的官网魔法书目录http://book.mofamulu.com 咔咔_嘎嘎的窝吧: https://tieba.baidu.com/p/7852395201

与此同时截止2022年12月31号,目前用户最多的第三方客户端tiebalite仍在追赶上述第三条breaking change https://github.com/HuanCheng65/TiebaLite/commit/dbd885fb9c341dbf994b5ae13f54613a4f57d1fe#diff-7c49b0e44b1ca847eb58ceb0e83578584fb6e92c0985463ee6f25e3bc86c92bfR760 image https://github.com/HuanCheng65/TiebaLite/commit/a9c6d70af5fb4a9413e30cdcb75c2f420d14b62b https://github.com/HuanCheng65/TiebaLite/commit/8790752988d72fe578d7a54a8e48915ff1a2ff64


https://github.com/bakasnow/TiebaDuster 鸡血神鸡毛毯子 https://github.com/bakasnow/TiebaManagerMini 鸡血神贴吧管理器迷你版 https://github.com/1021263881/TieBaTools https://github.com/shitianshiwa/Tieba-Cloud-Review 这个repo的fork parent repo您自删了?我看commit author全都是您 https://github.com/cash2one/pdiff 疑似接口参数排列组合 https://github.com/96dl/Tieba-Cloud-Sign-Plugins ver4以前给tc写的插件,其中有个云审查

这大概就是贴吧程序员送给我们的圣诞礼物罢: https://github.com/Starry-OvO/aiotieba/pull/63#issuecomment-1362433590 cc @BANKA2017 tc用的那些接口近况如何

lumina37 commented 1 year ago

为了使用最新版本特性呗,什么虚拟形象之类的,人都用来打广告了我总不能不跟进吧

n0099 commented 1 year ago

虚拟形象如何用来发广告?他完全允许ugc如用户上传个人页/名片背景图?

lumina37 commented 1 year ago

虚拟形象状态可以自定义,比如设成毛片网址或者群号

n0099 commented 1 year ago

与此同时:我把用户页的个性签名设为四叶重工,相信品牌的力量都会被和谐

n0099 commented 1 year ago

每个主题帖的楼主用户元数据被从/.data.userlist(json是/.user_list)移到了每个主题帖下的author(/.data.threadlist[].author,json是/.thread_list[].author)中并删除了authorid的值

删除thread.authorId的罪恶行径实际上早在8月就开始了 image https://github.com/n0099/TiebaMonitor/blob/47044cc68b41b957cb0b899a1be0b4780f757cf4/crawler/src/Tieba/Crawl/Parser/ThreadParser.cs#L34 image https://github.com/n0099/TiebaMonitor/blob/b8d6f02e4cb8627a2b6b8bc909c01a13ad1c74ae/crawler/src/Tieba/Crawl/Parser/ThreadParser.cs#L47 image image

我选择

UPDATE tbmc_f97650_thread AS T JOIN tbmc_f97650_reply AS R
ON R.tid = T.tid AND R.floor = 1 AND T.authorUid = 0
SET T.authorUid = R.authorUid;

前后: image image

n0099 commented 1 year ago
  1. 删除了threadlist[].firstpostid(主题帖第一楼的pid)的值

实际上按照圣starry神的最高指示 https://github.com/Starry-OvO/aiotieba/issues/67#issuecomment-1376006123 加上common._client_type=2request protobuf param后就又回来了: image 但删掉就还是protobuf default value 0image

n0099 commented 1 year ago

image

2023-02-12 18:30:03.4341|ERROR|T84|BaseCrawlFacade`5.LogException|Exception
page: 1;fid: 898666;forumName: 贴吧意见反馈;parsed: tbm.Crawler.Db.Post.ThreadPost;raw: { "tid": "8259338363", "title": "申请解除封禁屏蔽", "replyNum": -1, "viewNum": 34, "threadTypes": 1024, "author": { }, "Abstract": [ { "text": "亲爱的各位贴吧管理组成员: " } ], "fid": "898666", "firstPostId": "146841271316", "createTime": 1676191790, "authorId": "6391274527", "agree": { } } System.Exception: Thread parse error.
 ---> System.OverflowException: Arithmetic operation resulted in an overflow.
   at tbm.Crawler.Tieba.Crawl.Parser.ThreadParser.Convert(Thread inPost) in /src/Tieba/Crawl/Parser/ThreadParser.cs:line 43
   --- End of inner exception stack trace ---
   at tbm.Crawler.Tieba.Crawl.Parser.ThreadParser.Convert(Thread inPost) in /src/Tieba/Crawl/Parser/ThreadParser.cs:line 43
   at System.Linq.Utilities.<>c__DisplayClass2_0`3.<CombineSelectors>b__0(TSource x)
   at System.Linq.Enumerable.SelectIListIterator`2.MoveNext()
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at tbm.Crawler.Tieba.Crawl.Parser.BaseParser`2.ParsePosts(CrawlRequestFlag requestFlag, IList`1 inPosts, Dictionary`2& outPosts, List`1& outUsers) in /src/Tieba/Crawl/Parser/BaseParser.cs:line 15
   at tbm.Crawler.Tieba.Crawl.Facade.BaseCrawlFacade`5.ValidateThenParse(Response responseTuple) in /src/Tieba/Crawl/Facade/BaseCrawlFacade.cs:line 213
   at tbm.Crawler.ExtensionMethods.ForEach[T](IEnumerable`1 source, Action`1 action) in /src/ExtensionMethods.cs:line 61
   at tbm.Crawler.Tieba.Crawl.Facade.BaseCrawlFacade`5.<>c__DisplayClass26_0.<<CrawlPageRange>b__0>d.MoveNext() in /src/Tieba/Crawl/Facade/BaseCrawlFacade.cs:line 104
--- End of stack trace from previous location ---
   at tbm.Crawler.Tieba.Crawl.Facade.BaseCrawlFacade`5.LogException(Func`1 payload, UInt32 page, UInt16 previousFailureCount, CancellationToken stoppingToken) in /src/Tieba/Crawl/Facade/BaseCrawlFacade.cs:line 192

c/f/frs/page接口中的FrsPage/DataRes.thread_info.reply_num可能是-1