Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教一个旧版的问题 #128

Closed
Hawaii-ol opened this issue Jun 10, 2023 · 5 comments
Closed

请教一个旧版的问题 #128

Hawaii-ol opened this issue Jun 10, 2023 · 5 comments
Labels
question StackOverflow

Comments

@Hawaii-ol
Copy link
Contributor

v2.10.3版本的get_homepage接口无法获取到用户的IP归属地信息,返回的字段为空,但是get_post接口可以,是什么原因呢?
我对比了一下v2.10.3和当前版本的get_homepage目录的proto文件,几乎是一样的,那么是请求参数的问题吗?
我又对比了一下二者的pack_proto方法,的确有一些区别,但我不确定具体是哪个字段的影响。

@lumina37
Copy link
Owner

估计是那个版本常数的问题,12.37之后才会带ip

@n0099
Copy link

n0099 commented Jun 10, 2023

对于主题帖/回复贴/楼中楼3大接口中附带的用户信息的ip归属地是22年5月的12.23.7.0引入的n0099/tbclient.protobuf@7c0587a#diff-0cd18a13f37b1fa7a00bee09d6e54617331834d09725d5e5f3fe90f6306f63e0R170

@Hawaii-ol
Copy link
Contributor Author

v2.10.3中的User.proto文件是有ip_address字段的
我用现在的pack_proto方法替换掉v2.10.3中的,就可以返回IP了
我对比了一下二者的请求proto字段:
屏幕截图 2023-06-11 095411
屏幕截图 2023-06-11 095711
发现只要带上_client_type=2就可以了(不过这个参数是什么意思呢?)
再次感谢各位!我关闭这个issue了

@lumina37
Copy link
Owner

可能是在那个版本之后才修复了_client_type缺失导致的一系列问题。当时贴吧后端暗改,对所有不带_client_type的请求都只返回适配远古版本的内容。这个参数具体是什么意思我也不懂,估计是安卓IOS的区别吧

@n0099
Copy link

n0099 commented Jun 11, 2023

那就是2022年12月31日前后的那次贴吧后端修改:
#64 (comment)

4. json格式的这个接口中有一个遗留的冗余父主题帖元数据嵌套于/.thread.thread_info/.thread本身就是回复贴的父主题帖元数据)中,他有一个phone_type,其值跟在贴吧网页端上才能看到的每个回复贴楼主使用的发帖设备(来自Android/iPhone/Windows Phone/Windows 8 UWP客户端,也就是经典发帖接口的_client_type字段值: MoeNetwork/wmzz_post@4752b09/wmzz_post_cron.php#L16 MoeNetwork/wmzz_post@80aba25/wmzz_post_setting.php#L64 ,以及更加远古的来自百度相册)相同(android iphone

https://github.com/MoeNetwork/wmzz_post/blob/80aba25de46f5b2cb1a15aa2a69b527a7374ffa9/wmzz_post_setting.php#L64

<option value="4" <?php if($s['device'] == '4') echo 'selected' ?> >Windows 8</option>
<option value="3" <?php if($s['device'] == '3') echo 'selected' ?> >Windows Phone</option>
<option value="2" <?php if($s['device'] == '2') echo 'selected' ?> >Android</option>
<option value="1" <?php if($s['device'] == '1') echo 'selected' ?> >iPhone</option>

#67 (comment)

v2.10.2 (release) 中进一步指出:

#67 #68 描述的bug的产生原因是 /pb/page 接口新增了对 _client_type 参数的依赖,缺失该参数会导致获取的数据归属于默认的远古版本,表现出的具体特征有: 返回用户昵称为旧版, user_list 不包含数据,无法识别音频内容等。因此在添加上 _client_type 参数后, 2.10.1 的以下变化可以被安全地回滚: FragImage.big_src 被重新添加, FragLink.is_external 恢复由 /mo/q/checkurl 前缀判断, Posts 和 Threads 的解析流程仅保留【同时使用 user_list + author_id 字段】而弃用【直接使用 author 字段】

所以带个_client_type=2就可以变回user_list结构了?

@lumina37 lumina37 added the question StackOverflow label Jun 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question StackOverflow
Projects
None yet
Development

No branches or pull requests

3 participants