You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
3.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
layout: post
title: 如何不使用贴吧App查看贴吧
tags: [贴吧, PHP]
---
为自己手机的最后一片净土而战(ง •_•)ง<!--more-->
# 起因
由于某些原因,我还是很想上百度贴吧看看的。虽然一些大公司很流氓,但也正因为他们是大公司,所以积累的信息才更多……
一年前,我因为使用百度搜索时打不开搜索内容,所以不得不[使用了一些办法](/2019/05/12/baidu.html)来解决这个问题。不过看起来百度也知道自己这么做是在砸自家招牌,所以后来这个问题百度貌似他们自己解决了。
而现在呢我又因为某些原因需要使用百度贴吧当然安装贴吧App就是在侮辱我的手机。一般来说遇到这个问题只要用桌面版的贴吧就好了但是很遗憾的是我用的浏览器是基于WebView的Firefox Rocket不支持更改UA……既然如此我只好运用我编程的技能解决这个问题了。
# 解决方案
在正常情况下用手机看贴吧的贴子是看不到全部内容的只能看到前两楼当然这样的贴吧就是废物要想看剩下的内容就需要下载贴吧App了。不过以前贴吧有一个极简版虽然很简陋但是也够用了。然而很糟糕的是百度他们不允许极简版列出贴子的标题了如果用极简版看贴吧的话是看不到贴子的列表的。
不过如果知道贴子的ID貌似还是能正常打开的所以我们只需要获得到贴子的列表和ID就OK了。
经过我的研究,只要在`http://tieba.baidu.com/mo/q-----1----/m?kz=`后面加上贴子的ID就能看到贴子的全部内容只是这个貌似不能发帖不过我也不需要这个就是了。
于是我参考了以前[Iwara Viewer](/2019/04/13/iwara.html)的代码,写出了最终的代码。
# 代码
```php
<?php
if (isset($_GET["kw"])) {
if (!isset($_GET["pn"])) {
$_GET["pn"] = 1;
}
$url = 'https://tieba.baidu.com/f?kw='.iconv("utf-8","gb2312",$_GET["kw"]).'&pn='.($_GET["pn"]-1)*50;
$str = file_get_contents($url);
$preg='/<a rel="noreferrer" href="\/p\/(.*?)" title="(.*?)" target="_blank" class="j_th_tit ">/is';
preg_match_all($preg,$str,$match);//在$str中搜索匹配所有符合$preg加入$match中
echo "<title>Mayx Tieba Viewer</title><h1>Mayx Tieba Viewer</h1><hr />";
if ($http_response_header[0] != "HTTP/1.0 200 OK"){
echo "<b>Warning</b>:It's Not Tieba Name<br>";
}
for($i=0;$i<count($match[0]);$i++)//逐个输出超链接地址
{
echo "<a href=\"http://tieba.baidu.com/mo/q-----1----/m?kz=".$match[1][$i]."\">".$match[2][$i]."</a><br>";
}
echo "<hr><a href=\"?pn=".($_GET["pn"] + 1)."&kw=".$_GET["kw"]."\" >Next Page</a>";
} else {
echo '<title>Mayx Tieba Viewer</title><h1>Mayx Tieba Viewer</h1><hr><form action="" method="get">Please Input Tieba Name:<input type="text" name="kw" required><input type="submit" value="Submit"></form>';
}
```
虽然说用JavaScript貌似也可以做到可惜我学艺不精只好用PHP解决了。
# 演示
<https://yuri.gear.host/tiebaview.php>
# 后记
P.S.这个东西是专门为了手机设计的,所以电脑完全没必要使用这个看帖子。
另外就是希望百度做个人吧……HTML肯定是能实现相应功能的非要人下载App虽然我也知道是为了利益但是这真的是太恶心了……另外……知乎也一样太恶心最终一定会流失掉用户的。
# 真相
我不知道的是很多的小程序上也有贴吧,像微信上也有,白做了😂……算了,就当练手+氵一篇了23333