flitch
flitch copied to clipboard
New auth system still broken
O sistema de autenticação que colocaram na API acabou quebrando bastante coisa, atualmente todas as rotas exceto a de pegar os links dos eps funcionam. Atualmente no APP, se você clicar para assistir um episódio, você é levado para um vídeo falando do app original, AnimeTV...
A tentativa de arrumar esse erro pela PR #14 acabou só funcionando por 2 dias eu acredito, após isso houve outra alteração que exige que sejam enviados dois parâmetros na URL da requisição, token
e r
Esses parâmetros são necessários apenas para as requisições que vão pegar dados de streaming de eps
Acabei batendo com esse problema e tive uma solução, não sei se é a ideal nem sei porque ela funciona 😅, mas funciona...
Basicamente os parâmetro token
e r
são inteiros que quando divididos token / r
, seu resultado tem que ser por volta de 3248982548
(não me pergunte porque...)
Essa foi minha solução para o problema:
const STREAMING_DATA_TOKEN = '32489800000000';
const STREAMING_DATA_R = '10000';
const EP = '433311';
const url = `https://appanimeplus.tk/meuanimetv-40.php?episodios=${EP}&token=${STREAMING_DATA_TOKEN}&r=${STREAMING_DATA_R}`
A única coisa que muda são esses parâmetros mesmo, a questão dos headers precisam continuar.
Excelente, não tinha menor ideia de onde vinham este parâmetro token
e r
, então muito obrigado, vou implementar essa solução, salvou bastante tempo. Obrigado novamente!
Acabei de ver que na verdade essa solução é temporária. O token
e o r
é gerado automaticamente dentro do aplicativo deles, mas parece ser algo relacionado ao timestamp
da requisição, de qualquer forma, obrigado pela issue, vou tentar encontrar uma solução quando estiver mais tempo livre.
Realmente token
e r
são gerados automaticamente pelo app dos cara, eu testei umas 10 combinações de token / r
que foram gerados por eles e deu aquele valor aproximado.
Eu também acredito que será método temporário, porém eu não consegui achar nenhuma relação visível com o timestamp
.
De qualquer forma boa sorte, e obrigado pela documentação da API 😁
Acho que entendi como são pegos os parâmetros:
r = Math.floor(Math.random()*90000) + 10000; // numero de 5 digitos aleatório
time = ((Date.now()/1000)*2) // é basicamente o valor quando vc dividir o token pelo r
token = (time * r).toFixed() // token ( token / r = time => token = time * r )
console.log(time)
console.log(r)
console.log(`?episodios=433311&token=${token}=&r=${r}`)
De fato era relacionado com o timestamp
, todas as vezes que você divide os valores de token
por r
que são usados pelo app dos cara, o resultado é o timestamp * 2
do momento daquela request
Continuo não tendo certeza se isso vai ser uma solução definitiva ou apenas temporária...
Também tem a questão do token que vai no header da request X-Auth
, ele é gerado com um POST no subdominio auth
dos cara, basicamente você tem que enviar um arquivo no corpo da request e tem que ter Content-Type: application/octet-stream
no header, testei aqui e consegui um arquivo .dat
com umas coisa meio doida dentro dele, falta saber se esse arquivo também é gerado pelo app na hora da request ou é a mesma coisa sempre.
Cara, isso parece ser uma solução boa. Não me parece que está faltando algo. E minha dúvida é a mesma que a sua. Será que esse arquivo .dat
é temporário? Mas de qualquer forma, vou implementar essa solução e veremos nos próximos dias se vai ser permanente.
E cara, muito obrigado pelo esforço, sinceramente. Bom domingo e bom trabalho!
Eu também estou com esse problema! Mas eu encontrei uma solução.
É basicamente um outro link que retorna os dados da mesma API, assim eu não preciso mandar informações pelo headers na hora hora do request! Mas há uma pequena desvantagem: não tem a resolução Full hd! Tem apenas as resoluções SD e HD. Mas funcionam.
Entendi, esse outro link é o link antigo?
Não é o link antigo, é uma variação que outro app fez.
Mas ele retorna os mesmos animes que estão no latest do AnimeTV original, mas os links dos vídeos já vem junto, sem precisar fazer um nova requisição em busca dos links dos vídeos. O mesmo vale para os episódios dos animes! Quando fizer o request dos episódios, os links dos vídeos de cada episódio virá junto, tanto sd, tanto hd, mas sem o full-hd.
Eu olhei o AnimeDart, ele ainda está com o aviso do AnimeTV. Esse seu app está muito bonito e otimizado! Fiquei impressionado. Eu também fiz um app de Animes em Java e Kotlin, mas sem fins lucrativos! Apenas para se livrar das propagandas :)
Boa noite ou boa, eu quero apresentar aqui um erro que estou tendo com a api, estava fazendo testes para fazer funcionar em um site junto com o token para tentar fazer um site mas pelo visto eu não consigo fica sem dar video
Espero que possam me ajudar.
pelo que percebi
eu não tenho permissão para acessar esta pagina, que eo do anime (player) E também são com todos.
Quando esse erro de permissão acontece é por causa de uma aspas duplas ou um backslash sobrando na URL
https:\//urldovideo.com/monte=de¶metros=\da&url/
é possivel arrumar este problema? como?
Você só precisa normalizar a URL. Pode enviar aqui a URL completa que dá o erro? Acredito que se for isso mesmo é só um errinho bem simples.
Estou tendo mesmo problema do @tgkevinbr, achei estranho ter virgula no padrão da url, isso não deveria acontecer sabendo que para querys utilizamos "?". Veja o que está retornando:
https://redirector.googlevideo.com/videoplayback?expire=1625022935&ei=V3HbYLadK4nougKkpZKgBQ&ip=149.56.143.221&id=3026087d8e1d87e9&itag=22&source=blogger&mh=3u&mm=31&mn=sn-4g5ednse&ms=au&mv=u&mvi=4&pl=27&susc=bl&mime=video/mp4&vprv=1&dur=45.186&lmt=1624630913081761&mt=1624993738&txp=1311224&sparams=expire,ei,ip,id,itag,source,susc,mime,vprv,dur,lmt&sig=AOq0QJ8wRAIgeHkvlMnqJfFjKPmc5vIPsYYIvF9dUD1nYJ2GRej1pnwCIGIDmCxQWiqjXl34bO4mc_LoFcHkf3QZHtqi5FJRCDeT&lsparams=mh,mm,mn,ms,mv,mvi,pl&lsig=AG3C_xAwRAIge57ICp8OriWdh_MthAcWsbPqD9r-KeCYFDgH_OOQF-oCICAPBHMVjgPhCTKpcvtRf2nCxUCjM2uPwDWqmD2cYApM
@tgkevinbr @LucasFerreira159
Ambos os erros só acontecem porque vocês não estão enviando um header necessário para a autenticação, esse link que da "sem permissão" é um link padrão que é retornado quando não se autentica. Também acontece isso quando você não manda nem o token
nem o r
atualizados
Tá aqui um cURL de como fazer essa requisição da forma correta:
curl --request GET \
--url 'https://appanimeplus.tk/meuanimetv-40.php?episodios=486836&token=280278124831014=&r=86177' \
--header 'X-Auth: CODIGO_DE_AUTENTICAÇÃO' \
Lembrando claro, você precisa do arquivo .dat
que eu já comentei sobre para poder pegar o código de autenticação, e também esse &token=280278124831014=&r=86177
estão desatualizados porque essa request é de um tempo atrás.
o arquivo .dat
Está indisponivel para ver. eu estou vendo como fazer funcionar.
Aqui o arquivo novo, ele mudou desde que eu tinha enviado, porém os códigos de autenticação que foram criados com o antigo arquivo ainda continuam funcionando.
como posso fazer funcionar na template chamada moovetv, estou vendo aqui já implementei tudo certo só estou vendo como fazer funcionar.
Acho que mudaram o método de autenticação de novo, não tenho conseguido puxar os dados dos episódios usando esses métodos e o app (Animes Dart) também não tem funcionado. Alguém tem alguma ideia do que mudou?
@yuyura, mesmo problema aqui :/
@yuyura, eu vi que eles mudaram o endpoint da api para essa daqui https://appanimeplus.tk/meuanimetv-71.php
Estou com dificuldade para manusear o arquivo .dat, nunca mexi com esse tipo de arquivo, alguém pode me ajudar? Sobre o uso da api, não consigo acessar o vídeo por falta de permissão, então creio que falta o argumento x-auth no header né? Então, não sei bem como fazer isso, aceito ajuda :(
Sobre o arquivo .dat
não é algo que a gente vá manusear, por que é um arquivo binário, como podemos ver aqui nesta página da Wikipédia.
Então o que você precisa é apenas enviar o arquivo .dat
no corpo da requisição (eu acho, pode ser que tenha que enviar em outro lugar).
Basicamente:
- Veja como enviar uma requisição HTTP a partir do que você tá usando (React Native, Flutter, VanillaJs, etc.). Isso vai servir pra se autenticar na API, buscar dados, etc.
- Veja como enviar uma multipart request a partir do que você tá usando. Isso vai servir pra enviar o arquivo na requisição da etapa 1.
- Sobre a falta de permissão, essa parte já é mais chata por que tem que ver a API deles, ver os endpoins certinho e o que tem que enviar em cada um. Eu não estou muito atualizado por que faz um tempinho que não mexo na API deles, mas eu começaria monitorando o App oficial do zero, veja todas as requisições que eles enviam (Use o Burp Suite pra isso, é bem completo ele), e tente replicar as requisições por algum cliente desktop, como o Insomnia por exemplo. Aí caso precise de algum dado, veja se já citaram esse dado aqui na issue (Como aquele token e o arquivo).
Atualmente acredito que não dá mais de usar o Apk pra extrair informação por que eles obfuscaram. E se der, demora um tempinho. Então restou monitorar as requisições HTTP que eles enviam.
Mas qualquer dúvida que ficou manda aí, vou tentar responder, valeu!
Interceptei as requisições do app há uns dias, mas ainda não consegui resolver o problema. Só percebi que:
A url base da requisição mudou, como já havia sido citado aqui pelo @zevdvlpr, agora ela é https://appanimeplus.tk/meuanimetv-71.php.
E a rota de autenticação mudou também, agora o http post deve ser feito em https://auth.appanimeplus.tk/v7.php
, e fora a url, a única diferença é que parece que o conteúdo do arquivo tem que ser convertido para base64.
Fora essas duas coisas, nada parece ter mudado no que diz respeito as requisições, para pegar as informações do episódio ainda tem que fazer aquelas operações no timestamp e enviar o token que a rota de autenticação cuspiu de volta como "x-auth" no cabeçalho da requisição.
O problema mesmo agora é o que a rota do episódio retorna, não é mais conteúdo humanamente legível, agora o texto tá criptografado, se alguém quiser ver, upei o resultado da requisição no ghostbin aqui
essa criptografia parece ser um token JWT, tentei várias maneiras de decodificar, porém infelizmente não consegui.
Mudando um pouco o rumo desta issue, mas descobri um site que retorna exatamente um json com informações de streaming, veja: https://animefire.net/video/re-zero-kara-hajimeru-isekai-seikatsu-2nd-season-dublado/7
trocando a palavra video por animes, o front-end da página é mostrado.
Retorna mesmo, parece ser possível mapear os endpoints usando o devtools do navegador. Se você for fazer alguma documentação semelhante à desse repositório, seria legal se compartilhasse por aqui. De qualquer forma, atualmente não estou mais procurando implementar API de terceiros, mas sim migrar os animes para servidor à parte (apenas indexar), dessa forma vou poder disponibilizar a API sem risco de sofrer qualquer alteração como aconteceu na API do AnimeTV.
https://appanimeplus.tk/play-api.php está funcionando e não precisa de autenticação.
Galera, to com um problema. O retorno da api ta vindo em string (não sei se estou fazendo algo errado, mas acredito que não) e não sei como transformar pra JSON normalmente. Estou testando a api novamente no mesmo app que tinha feito antes dos problemas com o token, então acredito que tenha mudado algo na resposta da API e eu tenha que mudar algo, mas não sei como resolver, alguma solução?
Sem código é impossível saber.
Máximo que consigo chutar pelo que disse:
https://stackoverflow.com/questions/10976897/converting-a-string-to-json-object.
Sem código é impossível saber.
Máximo que consigo chutar pelo que disse:
https://stackoverflow.com/questions/10976897/converting-a-string-to-json-object.
Tinha até descrevido o problema bonitinho, mas apaguei porque descobri o motivo kkkkkkkkkkk Simplesmente atualizei as dependências do projeto e voltou. O que isso tem a ver com receber uma resposta em string ao invés de JSON não sei, mas pelo menos voltou a funcionar 😭