Uma forma se repete nos meus projetos: algo existe, é útil e não vai te dizer como funciona. Escrevi um keygen para o Balsamiq Mockups como exercício de pesquisa — um estudo em C# de como as chaves de licença eram derivadas, sem distribuir nada. Construí um scraper que extrai estatísticas de países das infoboxes da Wikipédia, que codificam o mesmo dado de quinze maneiras diferentes. Construí um job serverless que faz backup das minhas playlists do SoundCloud, o que significou arrancar um client ID de uma página porque não havia uma via de entrada documentada. Três projetos sem relação, uma única atividade por baixo: observar o que o sistema faz, formular uma teoria, testá-la, anotar o que se aprendeu.
Falamos de engenharia reversa como se fosse coisa de pesquisadores de segurança e de gente que quebra DRM. Mas se você se integra a qualquer coisa que não construiu, está fazendo uma versão disso o tempo todo. A documentação está desatualizada. As mensagens de erro mentem. O campo marcado como obrigatório é opcional e o opcional é o que sustenta tudo. Toda integração é em parte arqueologia, e as que dão errado costumam ser aquelas em que alguém presumiu que não seria.
O método não tem nada de sofisticado. Você muda uma entrada e observa o que se move. Mantém a aba de rede aberta e lê cada requisição que a página faz, não só a que você esperava. Salva uma resposta antes e depois de uma ação e compara as duas. Quando um endpoint te rejeita, você lê a rejeição como um dado: ela acabou de te entregar uma regra que você não conhecia. Quase todo o esforço é estreitar: este campo importa, aquele é decorativo, a ordem dessas duas chamadas sustenta tudo e ninguém escreveu isso.
A parte que as pessoas pulam é anotar enquanto avança. Uma teoria que você carrega na cabeça se degrada entre uma sessão e outra; uma teoria num arquivo de texto, ao lado da requisição que a provou, sobrevive. Metade dos meus scrapers são na verdade esse arquivo com código em volta — uma lista crescente de "se tem essa cara, significa isso", acumulada uma surpresa de cada vez. Quando o sistema de origem muda seis meses depois, esse arquivo é a diferença entre uma tarde e uma reescrita.
Você também aprende onde parar. Não precisa de um modelo completo do sistema, só do suficiente para terminar a tarefa à sua frente e para perceber quando uma suposição quebra. Perseguir o entendimento total de algo que você vai tocar uma vez só é a sua própria forma de desperdício.
Parte do trabalho em que isso mais importou é trabalho que não posso detalhar aqui — feito para outras pessoas, sob condições que mantêm os detalhes em sigilo. A técnica era a mesma de tudo acima; só falta o relato.
Vale a pena se apoiar nisso porque é a porta de entrada de quem vem de fora. Você não precisa de permissão, de uma parceria nem de um contrato de suporte: precisa de paciência e de tolerância a errar algumas vezes antes de acertar. Uma vez confortável com isso, uma categoria inteira de "não dá, eles não têm API" se transforma discretamente em "me dá uma tarde".
Existe uma linha, e ela raramente é difusa na prática: estudar como algo funciona — uma cópia licenciada na sua própria máquina, uma resposta no seu próprio navegador — não é o mesmo que invadir um sistema que você não tem permissão para tocar, nem que sair distribuindo o que você construiu a partir do que aprendeu. Eu fico do lado de cá. Tudo acima é sobre tornar legível o que é permitido, não sobre tornar alcançável o que é proibido.
A fundação está lançada; agora é hora de construir.