Fixed trending, added explanation on VERIFY_CODE

This commit is contained in:
Pablo Ferreiro 2022-03-11 22:46:12 +01:00
parent 1e1376506c
commit f1de8e979b
No known key found for this signature in database
GPG key ID: 41FBCE65B779FA24
6 changed files with 65 additions and 9 deletions

View file

@ -9,9 +9,15 @@ use App\Helpers\RSS;
class TrendingController {
static public function get() {
$cursor = Misc::getTtwid();
$page = $_GET['page'] ?? 0;
$api = Misc::api();
$feed = $api->getTrending($cursor, $page);
// Ttwid if normal, cursor if legacy
if ($api::class === 'TikScraper\Api') {
$cursor = Misc::getTtwid();
} else {
$cursor = Misc::getCursor();
}
$feed = $api->getTrending($cursor);
if ($feed->meta->success) {
$latte = Misc::latte();
$latte->render(Misc::getView('trending'), new FeedTemplate('Trending', $feed));

12
composer.lock generated
View file

@ -306,16 +306,16 @@
},
{
"name": "pablouser1/tikscraper",
"version": "v1.2.7.3",
"version": "v1.2.7.4",
"source": {
"type": "git",
"url": "https://github.com/pablouser1/TikScraperPHP.git",
"reference": "64385d72ab47d14f883b24a40268ea4e7542133c"
"reference": "f42df2e947cfe9afc31a46737a48e720f161ef1c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/64385d72ab47d14f883b24a40268ea4e7542133c",
"reference": "64385d72ab47d14f883b24a40268ea4e7542133c",
"url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/f42df2e947cfe9afc31a46737a48e720f161ef1c",
"reference": "f42df2e947cfe9afc31a46737a48e720f161ef1c",
"shasum": ""
},
"require": {
@ -339,9 +339,9 @@
"description": "Get data from TikTok API",
"support": {
"issues": "https://github.com/pablouser1/TikScraperPHP/issues",
"source": "https://github.com/pablouser1/TikScraperPHP/tree/v1.2.7.3"
"source": "https://github.com/pablouser1/TikScraperPHP/tree/v1.2.7.4"
},
"time": "2022-03-11T20:01:55+00:00"
"time": "2022-03-11T21:42:09+00:00"
},
{
"name": "phpoption/phpoption",

View file

@ -14,6 +14,11 @@ $router->get('/about', function () {
$latte->render(Misc::getView('about'), new BaseTemplate('About'));
});
$router->get('/verify', function () {
$latte = Misc::latte();
$latte->render(Misc::getView('verify'), new BaseTemplate('Verify'));
});
$router->get('/stream', 'ProxyController@stream');
$router->get('/download', 'ProxyController@download');
$router->get('/redirect', 'RedirectController@redirect');

View file

@ -6,7 +6,11 @@
{/block}
{block content}
<p class="title">Why?</p>
<p class="title">About this instance</p>
<p>Forcing Legacy mode: {isset($_ENV['FORCE_LEGACY']) ? 'yes' : 'no'}</p>
<p>Instance-level Proxy: {isset($_ENV['PROXY_HOST']) ? 'yes' : 'no'}</p>
<hr />
<p class="title">Why would I want to use ProxiTok?</p>
<p>
There are already
<a rel="nofollow" href="https://penetrum.com/tiktok/Penetrum_TikTok_Security_Analysis_whitepaper.pdf">multiple</a>

View file

@ -5,5 +5,8 @@
<p class="subtitle">HTTP Code: {$error->http_code}</p>
{if $error->tiktok_code}
<p class="subtitle">API error code {$error->tiktok_code} ({$error->tiktok_msg})</p>
{if $error->tiktok_code === 10000}
<a href="{path('/verify')}">What does this mean?</a>
{/if}
{/if}
{/block}

38
views/verify.latte Normal file
View file

@ -0,0 +1,38 @@
{layout '../layouts/default.latte'}
{block header}
<p class="title">VERIFY_CODE</p>
<p class="subtitle">What can I do?</p>
{/block}
{block content}
<p>TL;DR You probably have to search for another instance or wait some hours (or even better, have your own self-hosted instance)</p>
<p>TikTok has some mecanisms in order to stop scraping on their latest api (/api/...):</p>
<hr />
<div class="block">
<p class="is-size-4">Rate limits</p>
<p>
This is pretty standard stuff,
it blocks ips temporarly if you send too many requests to an endpoint and unbans you after some hours.
</p>
</div>
<div class="block">
<p class="is-size-4">IP Blacklist</p>
<p>
It is a list with IPs from popular Hosters (AWS, Heroku...). This IPs are banned <i>(I think) permanently</i> and
can barely make requests.
</p>
<p>
This makes hosting a public instance really hard. Even if you use a hosting platform that is not banned by TikTok, it is only a matter of time
that it inevitably gets banned.
</p>
<p class="is-size-5">(For webmasters) How can I know if my server is not blacklisted?</p>
<p>Run this command on your instance:</p>
<code>
curl \
--url 'https://www.tiktok.com/@tiktok/?lang=en' \
--header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
</code>
<p>If you don't get an empty response or a captcha, you are good to go</p>
</div>
{/block}