andreroggeri / pynubank

Acesse seus extratos do Nubank pelo Python
MIT License
1.17k stars 178 forks source link

Não é possível acessar os dados da Nuconta (Extrato, saldo, etc) #419

Open eduardojunio opened 1 year ago

eduardojunio commented 1 year ago

Clonei o repo do zero e gerei o certificado rodando o comando pynubank no terminal.

Escrevi esse arquivo:

from pynubank import Nubank

nu = Nubank()

nu.authenticate_with_cert('[FILTERED]', '[FILTERED]', 'cert.p12')

print(nu.get_account_balance())

E estou recebendo esse erro:

Traceback (most recent call last):
  File "[FILTERED]/pynubank-test/test.py", line 7, in <module>
    print(nu.get_account_balance())
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/auth_mode.py", line 23, in wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/nubank.py", line 235, in get_account_balance
    data = self._make_graphql_request('account_balance')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/nubank.py", line 52, in _make_graphql_request
    return self._client.post(self._query_url,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/utils/http.py", line 49, in post
    return self._handle_response(post(url, json=json, headers=self._headers, **self._cert_args))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/utils/http.py", line 35, in _handle_response
    raise NuRequestException(response)
pynubank.exception.NuRequestException: The request made failed with HTTP status code 401
andreroggeri commented 1 year ago

Só pra ter certeza, você trocou 'CPF' e 'SENHA' pelo seu CPF e sua senha ?

eduardojunio commented 1 year ago

@andreroggeri sim. 😅

andreroggeri commented 1 year ago

Outros métodos tipo o get_account_feed funcionam?

Eu tenho uma automação rodando aqui normalmente

eduardojunio commented 1 year ago

@andreroggeri só como contexto extra: na verdade eu não uso sua lib, mas escrevi minha própria implementação baseado no trabalho que você e outros fizeram em descobrir como o app do Nubank funciona.

Minha implementação basicamente é uma integração entre o Nubank e o You Need a Budget (YNAB). Eu tenho um job no Google Cloud que roda todo dia 1am. Ele falhou pela primeira vez dia 23 de agosto com um 401 da ghostflame. Inicialmente eu pensei que fosse alguma coisa com o certificado, e quando rodei meu script pra gerar um novo, percebi que o www-authenticate não estava mais vindo (por isso abri a #418). Mas depois de resolver o problema (adicionar o header de correlation) e gerar um novo certificado, o 401 permaneceu.

Tentei usar sua lib (como descrevi na issue), mas está com o mesmo problema da minha. Logo, estou assumindo que o Nubank mudou a API dia 23 (porque dia 22 estava funcionando normal a integração). Na verdade esse job roda a meses (desde Maio), essa foi a primeira vez que falhou com um 401.

Eu queria fazer a engenharia reversa no app pra descobrir como o Nubank tá fazendo agora, mas não tenho o tooling necessário e nem muito conhecimento de apps nativos (Android e iOS). 🥲

eduardojunio commented 1 year ago

Outros métodos tipo o get_account_feed funcionam?

401 também. Imagino que todos os métodos que usam a ghostflame terão o mesmo problema.

eduardojunio commented 1 year ago

@andreroggeri estava pensando aqui, o 401 idealmente vem com o "jeito" de como o cliente deveria se autenticar nos headers. Citando a MDN:

This status code is sent with an HTTP WWW-Authenticate response header that contains information on how the client can request for the resource again after prompting the user for authentication credentials.

Daí fui ver o WWW-Authenticate da resposta da ghostflame e olha o que achei:

'www-authenticate': 'challenge-platform deep-link="nuapp://dev_auth"',

Parece que precisa autenticar com o app de alguma forma. Acho que a alegria das integrações acabaram (ao menos com a ghostflame). 😢

andreroggeri commented 1 year ago

Talvez eles estejam fazendo rollout gradual, pois a minha automação continua funcionando.

Screenshot_20230827_165446_Samsung Internet.jpg

Vai ser difícil eu ajudar se não conseguir reproduzir :/

diegomdrs commented 1 year ago

Por aqui, no meu app em node que possui a parte da autenticação baseada no pynubank, por enquanto, tudo ok. Fiz o processo de obtenção de certificado, refreshToken e etc. do zero e está ok. Vou ficar de olho também

djmarcosban commented 1 year ago

acabei de clonar a repo e recebo 401 tambem

flarco commented 1 year ago

Aqui tou recebendo 401 também...

andreroggeri commented 1 year ago

Agora parou aqui também 😭

diegomdrs commented 1 year ago

E por aqui também, 401 e nada do saldo de conta corrente. Por enquanto os endpoints das consultas ao cartão de crédito estão funcionando

Reikagilu commented 1 year ago

estou exatamente como o @diegomdrs, que droga, acabei de montar um programinha legal aqui com sua api será que esse é o fim?

lucasgr7 commented 1 year ago

Recebendo 401 em métodos que envolvem transações da conta, transações de cartão de crédito tudo ok.

Olhando pelo site aparenta ter alguma alteração afetando: image

Vidalvorada commented 1 year ago

Também estou obtendo o 401.

Bezouro commented 1 year ago

Recentemente reportei um problema em um dos endpoints do Nubank na Hackerone enquanto trabalhava no https://github.com/Bezouro/nubank.ts e o problema foi resolvido semana passada (bate com a data que esse problema começou a ocorrer, coincidencia? hmm) fui afetado por isso tbm e agora to correndo atrás pra descobrir como lidar com isso... quaisquer novidades deixo registrado aqui tbm

O interessante é que o header trás o deeplink nuapp://dev_auth o que sugere que talvez o nubank esteja percebendo que estamos acessando a api por fora do app e talvez em breve tenhamos uma forma de obter um token de api proprio para desenvolvedores.

tavlima commented 1 year ago

Pelo e-mail que recebi, depois da primeira autenticação, acredito que fosse necessário o reconhecimento biométrico, na autorização do novo dispositivo. Não cheguei a inspecionar os requests, mas suponho que seja isso. Esse sendo mesmo o caso, acredito que vamos ter que esperar por uma API oficial/pública mesmo….

On Thu, Aug 31, 2023 at 20:39 Bruno Bezouro @.***> wrote:

Recentemente reportei um problema em um dos endpoints do Nubank na Hackerone enquanto trabalhava no https://github.com/Bezouro/nubank.ts e o problema foi resolvido semana passada (bate com a data que esse problema começou a ocorrer, coincidencia? hmm) fui afetado por isso tbm e agora to correndo atrás pra descobrir como lidar com isso... quaisquer novidades deixo registrado aqui tbm

O interessante é que o header trás o deeplink nuapp://dev_auth o que sugere que talvez o nubank esteja percebendo que estamos acessando a api por fora do app e talvez em breve tenhamos uma forma de obter um token de api proprio para desenvolvedores.

— Reply to this email directly, view it on GitHub https://github.com/andreroggeri/pynubank/issues/419#issuecomment-1701914515, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJZKI27S7WHF6F3EQRXDN3XYEOE3ANCNFSM6AAAAAA4AHAVOQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

monrapps commented 1 year ago

+1

Bezouro commented 1 year ago

Uma pena que meu dispositivo de testes quebrou, era o único aparelho rooteado que eu tinha to tentando configurar um emulador, mas sem webcam é complicado pra fazer os dois estágios da autenticação

andreroggeri commented 1 year ago

@Bezouro ontem eu tava dando uma explorada no app e vi que eles estão fazendo detecção de root / magisk e afins.

Você já tem algum método para não ser detectado ?

Eu vi que bloquear a requisição não é o suficiente :/

Bezouro commented 1 year ago

@andreroggeri Nunca tive problema com isso, eu usava um nexus 5 com custom rom, e root via magisk, até semana passada aqui estava funcionando perfeito, tenho que conferir agora :(

Vou tentar arrumar outro celularzin de cobaia, eu tenho um s10+ aqui mas o knox me quebra

andreroggeri commented 1 year ago

Eu sei que no magisk tem umas paradas pra "ocultar" o root . Você tinha algo do tipo ativo ?

andreroggeri commented 1 year ago

é, pelo o que eu tava vendo, o comportamento do app mudou também... Não tem mais como acessar as coisas da conta sem fazer o segundo passo de autenticação. 😢

Eu vou dar mais uma investigada, mas acho improvável que consigamos burlar isso. Provavelmente a parte de cartões deve ser bloqueada em breve também.

lipemorais commented 1 year ago

Poxa! Que tristeza essa thread! 😮

Minha automação começou a falhar ontem na conta as coisas relacionadas a cartão estão de boa.

andreroggeri commented 1 year ago

@lipemorais liga pros seus contatos de lá e pede pra deixarem um backdoor hahahah

Reikagilu commented 1 year ago

isso, faz essa pra gente, @lipemorais

Bezouro commented 1 year ago

Eu sei que no magisk tem umas paradas pra "ocultar" o root . Você tinha algo do tipo ativo ?

@andreroggeri Não, nunca cheguei a ativar isso pra o nubank, porem para outros apps eu ja usei (e até que funciona bem) se vc mudar o pacote do magisk pra um aleatorio, e usar a feature de esconder normalmente da bom (se for custom rom, vale a pena tbm conferir o build.prop pra n deixar detectavel que é custom rom)

Bezouro commented 1 year ago

é, pelo o que eu tava vendo, o comportamento do app mudou também... Não tem mais como acessar as coisas da conta sem fazer o segundo passo de autenticação. 😢

Eu vou dar mais uma investigada, mas acho improvável que consigamos burlar isso. Provavelmente a parte de cartões deve ser bloqueada em breve também.

Esse era meu medo quando reportei o problema pra eles, eles verem que tem gente usando a api e começar a barrar tudo...

sempre curti usar a api do nubank por conta daquele tweet então nunca me preocupei, mas agora da uma tristeza ver que ta tudo dificultando (mais do que ja era)

Reikagilu commented 1 year ago

Negocio se pa é todo mundo ficar chamando o suporte solicitando acesso a API kkkk

vitorhuggo33 commented 1 year ago

tem algum outro banco que tenha api igual essa ? estou pensando em migrar

Reikagilu commented 1 year ago

tem algum outro banco que tenha api igual essa ? estou pensando em migrar

eu achei um pyitau, mas não vi ainda como que funciona

Bezouro commented 1 year ago

Negocio se pa é todo mundo ficar chamando o suporte solicitando acesso a API kkkk

Acho que a gente deve mostrar o interesse da comunidade em usar a api do nubank, e mostrar a relevancia das bibliotecas feitas pela comunidade

bartier commented 1 year ago

Entrei em contato com o Nubank para verificar se existe algo que possa ser feito, mas se isso inviabilizar o consumo da API, provavelmente terei que alterar de banco

eduardojunio commented 1 year ago

Eu encontrei um workaround. Eu tenho conta no Mercado Pago. Dei ao Mercado Pago acesso aos dados do Nubank (usando o Open Finance) e fiz engenharia reversa no web app do Mercado Pago (foi bem fácil). Agora minha integração busca os dados do Nubank no Mercado Pago.

pfsmorigo commented 1 year ago

@eduardojunio Até onde vc consegue pegar as info de extrato e cartão pelo open finance do nubank?

Bezouro commented 1 year ago

Entrei em contato com o Nubank para verificar se existe algo que possa ser feito, mas se isso inviabilizar o consumo da API, provavelmente terei que alterar de banco

Também vou mudar de banco se n tiver mais como usar a api, usava o nubank somente por conta da api, desde o começo do ano deixei de receber meu salario no nubank e agora que minhas integrações não funcionam mais to parando de usar no geral tbm.

tavlima commented 1 year ago

Pinguei o pessoal da Pluggy, pra ver se criam um plano mais atrativo para hobby. Não custa tentar... 🤷‍♂️

lucasgr7 commented 1 year ago

Acreidto que até a Pluggy ta tendo dificuldade com Nubank: image

andreroggeri commented 1 year ago

Algumas empresas usam essa biblioteca pra obter acesso aos dados (não sei se é o caso da.pluggy) 😅

eduardojunio commented 1 year ago

Até onde vc consegue pegar as info de extrato e cartão pelo open finance do nubank?

@pfsmorigo consigo pegar muitos dados:

A única coisa que parece ter dado algum problema foi as movimentações do cartão de crédito. Acessando pelo próprio app do Mercado Pago dá erro.

Também não sei o quão rápido os dados atualizam. Pra minha integração que roda uma vez só por dia tá funcionando bem.

bartier commented 1 year ago

Pinguei o pessoal da Pluggy, pra ver se criam um plano mais atrativo para hobby. Não custa tentar... 🤷‍♂️

Não conhecia eles, achei interessante. Se eles derem uma devolutiva negativa, uma outra alternativa seria criar um projeto open-source que consome o plano Pro deles (R$100,00). Assim, poderíamos ter um pool de pessoas interessadas pra diluir o preço e ficar acessível a todos. Não sei o quão factível/realístico seria isso, é apenas uma ideia.

Gabrielpanga commented 1 year ago

Bom dia, Aqui Gabriel Cofundador da pluggy.

Atualmente nossa conexão direta com o Nubank também está apresentando erros, e estamos analisando se existe alternativa.

A opção OF regulamentada está disponível para produtos de Conta, Transações e Cartão de Crédito.

pfsmorigo commented 1 year ago

Oi @Gabrielpanga, pluggy depende do pynubank pra acessar os dados do Nubank?

Gabrielpanga commented 1 year ago

@pfsmorigo Não! Temos uma conexão com certas coisas em comum.

Por outro lado, temos a conexão do Open Finance Brasil, que é através do OAuth, e é aquela que o nubank permitiria o acesso em princípio.

bartier commented 1 year ago

Alguém já teve sucesso para fazer o cadastro para ter acesso ao OF - link? Queria utilizar uma forma que não fosse scrapping (forma atual do pynubank)

andreroggeri commented 1 year ago

Eu acredito que o open finance seja apenas para entidades financeiras =/

Aí que entra as empresas com a Pluggy, Belvo, etc.

Reikagilu commented 1 year ago

@bartier antes de descobrir essa repo eu pensei em tentar usar direto o OF, ate entrei em contato com o suporte para entender melhor como que funciona existem bibliotecas publicas, mas não tem nenhuma informação pessoal, seriam mais informações globais, apenas entidades financeiras cadastradas tem acesso a informações pessoais posso colar aqui a resposta do suporte se preferir

bartier commented 1 year ago

@bartier antes de descobrir essa repo eu pensei em tentar usar direto o OF, ate entrei em contato com o suporte para entender melhor como que funciona existem bibliotecas publicas, mas não tem nenhuma informação pessoal, seriam mais informações globais, apenas entidades financeiras cadastradas tem acesso a informações pessoais posso colar aqui a resposta do suporte se preferir

Entendi, não precisa colocar não, obrigado pelo overview. Uma pena que não tenha essa opção para a gente.

jeffbzrr commented 1 year ago

Triste ao ler toda essa thread rs. Meu sistema parou e tirei hj pra resolver, até ver aqui o que houve.

Alguém usa algo parecido em outro banco? Uso a pynubank a anos, meu acostumei totalmente. Se tiver algo que eu possa ajudar, me disponho.

Reikagilu commented 1 year ago

@bartier antes de descobrir essa repo eu pensei em tentar usar direto o OF, ate entrei em contato com o suporte para entender melhor como que funciona existem bibliotecas publicas, mas não tem nenhuma informação pessoal, seriam mais informações globais, apenas entidades financeiras cadastradas tem acesso a informações pessoais posso colar aqui a resposta do suporte se preferir

Entendi, não precisa colocar não, obrigado pelo overview. Uma pena que não tenha essa opção para a gente.

eu na verdade acho meio ridiculo que a gente não tenha acesso as nossas proprias informações