Geração de certificado não está funcionando
Closed this issue · 18 comments
Meu certificado expirou. Fui executar o normalmente o pynubank. Estava recebendo um NuException.
Primeiro pensamento é a senha. Então fui verificar se o motivo era porque a resposta estava retornando 401 ou porque o cabeçalho não estava na resposta.
Fiz o teste errando a senha e recebi um 401. Depois coloquei a senha certa e percebi que o cabeçalho WWW-Authenticate não estava retornando depois do post.
O erro ocorre após a chamada abaixo no arquivo certificate_generator.py:
response = requests.post(self.url, json=self._get_payload())
Pelo que entendi do código, esse response deveria ter o referido header.
Os cabeçalhos retornados foram:
content-security-policy object-src 'none'; script-src 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
Content-Type application/json;charset=utf-8
Referrer-Policy same-origin
Strict-Transport-Security max-age=31536000; includeSubdomains
X-Content-Type-Options nosniff
X-Download-Options noopen
x-frame-options DENY
x-http2-stream-id 12093
X-Permitted-Cross-Domain-Policies none
x-signature ***
x-xss-protection 1; mode=block
Content-Length 24
Connection keep-alive
Aparentemente a API de autenticação mudou 😢
Eu testei aqui e sempre estou levando 401 nessa url
Aqui não levo 401; é o header que está faltando.
Aparentemente a API de autenticação mudou 😢
Eu testei aqui e sempre estou levando 401 nessa url
Olá, pessoal! Eu também estou passando pelo mesmíssimo problema que o @lrezende =/
Confirmando aqui também. Até semana passada estava tudo ok
Pelo o que vi/copiei da implementação do pynubank do @andreroggeri, é esperado o retorno 401 dessa url, então até aí nada de novo. O problema mesmo está no header não possuir mais o atributo WWW-Authenticate
. Ao autenticar novamente em um projeto em node que tenho notei hoje esse problema.
E assim não temos como pegar o encrypted-code
e o sent-to
.
Fiquei curioso com o atributo x-signature
do header. Como teste, tentei enviá-lo ao invés do código que vinha no encrypted-code
, juntamente com o meu email cadastrado no Nubank e não recebi o email com o código
Alguém tem ideia de como ficou o novo fluxo de autenticação, eu fiz um port do pynubank para Kotlin para cobrir quem usa Kotlin/JVM e Java como eu, estava funcionando bem, quando ia abrir o código o processo de login mudou 🤦🏻♀️
Por aqui estou tendo o mesmo problema que o @lrezende
Mesmo problema aqui
Também estou com o mesmo problema
mesmo problema
Provavelmente todos terão o mesmo problema.
Enquanto não for ajustando aqui na biblioteca, a geração de certificado NÃO irá funcionar.
Eu estou sem tempo para olhar isso agora, mas qualquer contribuição é bem vinda.
Boa noite pessoal, alguém com conhecimento para saber se este projeto está conseguindo gerar o certificado?
como não é python pra mim fica difícil roda isso ai estou tentando mas apanhando https://github.com/fmsouza/nubank-api/blob/master/examples/generate-certificate.ts
se alguém conseguir com isso ai talvez consigamos continua usando a api aqui.
Numa lida rápida vi, que ao menos em relação a autenticação via certificado, é feito exatamente como no pynubank, ou seja, via obtenção do atributo www-authenticate
do header, por sua vez o encrypted-code
e etc.
A função é essa aqui: https://github.com/fmsouza/nubank-api/blob/10e3fa5e6164148b2f1abf1a43a8f42f094a2267/src/auth.ts#L93
De qualquer forma, o projeto do colega é bem legal.
Quem tiver interesse em ajudar, principalmente via frida, tem uma discussão bem adiantada aqui:
Só deixando meus 2¢ aqui já que meu projeto andou sendo citado acima - o projeto em TypeScript é só uma tradução desse aqui pra funcionar na runtime vizinha também. E como não tenho mais interesse pessoal nessa integração, só ajusto lá quando tem novidades aqui por amor mesmo, só proque sei que é útil.
Dito isso, acabei de testar lá e vi que a geração de certificados ta funcionando. O que não ta mais funcionando é a etapa do login, que é onde ta dando o 401.
Vou continuar acompanhando a thread também pra atualizar o código lá assim que houver novidades.
Edit: Correção - fiz tudo na pressa aqui e esqueci de colocar o CPF/senha certos no exemplo de login, ajustei e funcionou. Lá no meu repo ta tudo funcionando! Acabei de fazer login e depois acessar o feed e baixar a lista toda do meu extrato. 🎉
Só deixando meus 2¢ aqui já que meu projeto andou sendo citado acima - o projeto em TypeScript é só uma tradução desse aqui pra funcionar na runtime vizinha também. E como não tenho mais interesse pessoal nessa integração, só ajusto lá quando tem novidades aqui por amor mesmo, só proque sei que é útil.
Dito isso, acabei de testar lá e vi que a geração de certificados ta funcionando.
O que não ta mais funcionando é a etapa do login, que é onde ta dando o 401.
Vou continuar acompanhando a thread também pra atualizar o código lá assim que houver novidades.Edit: Correção - fiz tudo na pressa aqui e esqueci de colocar o CPF/senha certos no exemplo de login, ajustei e funcionou. Lá no meu repo ta tudo funcionando! Acabei de fazer login e depois acessar o feed e baixar a lista toda do meu extrato. tada
Não duvidando do @fmsouza, mas precisava ver com meus olhos. Baixei o projeto fmsouza/nubank-api, executei o arquivo generate-certificate.ts
e confirmei: está funcionando. Recebi o email com o código de acesso e tudo o mais. Obrigado @fmsouza!
Vou dar agora uma investigada e comparar a implementação dele com a minha. Tem algum passo diferente no projeto dele em relação ao pynubank e ao meu projeto. Quando achar, jogo aqui
@diegomdrs meu chute seria o X-Correlation-Id
No projeto do @fmsouza está usando o WEB-APP.pewW9
que é bem antigo e algumas queries não funcionam mais, talvez podemos usar esse correlation id pra gerar o certificado e o novo pra fazer as queries.
@andreroggeri Foi exatamente esse cara que resolveu parte do meu problema aqui. Adicionando esse cara ao header da requisição do request_code, voltei a receber os emails com os códigos de acesso do Nubank.
To tomando um erro agora no exchange-key, mas acho que é mais relacionado ao meu projeto mesmo do que com o fluxo que copiei do pynubank
EDIT: O problema com o exchange-key era coisa do meu projeto mesmo. Voltou tudo a funcionar por aqui, inclusive as queries de saldo de CC (account_balance) e extrato de CC (account_feed). Como não implementei as outras queries, não testei ainda.
@diegomdrs meu chute seria o
X-Correlation-Id
No projeto do @fmsouza está usando oWEB-APP.pewW9
que é bem antigo e algumas queries não funcionam mais, talvez podemos usar esse correlation id pra gerar o certificado e o novo pra fazer as queries.
EDIT 2: Aparentemente o X-Correlation-Id
só foi necessário na obtenção do código de acesso e geração do certificado. Para executar as queries, como também ao chamar outros endpoints, não tive problemas ao não utilizar o X-Correlation-Id
@andreroggeri Foi exatamente esse cara que resolveu parte do meu problema aqui. Adicionando esse cara ao header da requisição do request_code, voltei a receber os emails com os códigos de acesso do Nubank.
To tomando um erro agora no exchange-key, mas acho que é mais relacionado ao meu projeto mesmo do que com o fluxo que copiei do pynubankEDIT: O problema com o exchange-key era coisa do meu projeto mesmo. Voltou tudo a funcionar por aqui, inclusive as queries de saldo de CC (account_balance) e extrato de CC (account_feed). Como não implementei as outras queries, não testei ainda.
@diegomdrs meu chute seria o
X-Correlation-Id
No projeto do @fmsouza está usando oWEB-APP.pewW9
que é bem antigo e algumas queries não funcionam mais, talvez podemos usar esse correlation id pra gerar o certificado e o novo pra fazer as queries.EDIT 2: Aparentemente o
X-Correlation-Id
só foi necessário na obtenção do código de acesso e geração do certificado. Para executar as queries, como também ao chamar outros endpoints, não tive problemas ao não utilizar oX-Correlation-Id
Testei no meu port para Kotlin e parece ser isso mesmo, voltou a funcionar 🥰
Obrigado pessoal, problema resolvido na versão 2.25.0