Il sito Web non fornisce cookie (token csrf) durante la connessione tramite proxy. Perché come?

0

Il seguente codice Python deve prendere un token CSRF cookie da Instagram.com, ma ricevo un messaggio di errore quando eseguo il programma tramite qualsiasi tipo di proxy HTTPS o SOCKS5, informandomi che il cookie CSRF non è fornito.

Se s.proxies è commentato in modo che il programma non venga eseguito tramite un proxy, funziona perfettamente senza errori e Instagram.com fornisce un cookie token CSRF.

Quindi la mia domanda è: in che modo Instagram rileva che sto eseguendo il programma da un proxy? In altre parole, in che modo si differenzia tra una richiesta normale e una richiesta che passa attraverso un proxy?

import requesocks
import requests

s = requesocks.session()
# Tor uses the 9050 port as the default socks port
s.proxies = {'https': 'socks5://127.0.0.1:9050'}
url = 'https://www.instagram.com/accounts/web_create_ajax/'
s.get(url)
tok = s.cookies['csrftoken']

#Outputs: 
#Traceback (most recent call last):
#File "tor.py", line 24, in <module>
#tok = s.cookies['csrftoken']
#KeyError: 'csrftoken
    
posta user107978 18.04.2016 - 13:45
fonte

1 risposta

0

È semplice =) In caso di assenza di proxy stai seguendo tutti i reindirizzamenti te stesso , quindi non è un problema gestirlo. Un proxy può essere ingannevole come il proxy stesso (non nel caso Tor, ma ci sono programmi che si comportano in modo un po strano), quindi il componente proxy per la tua lingua può essere. Soprattutto accade spesso con i proxy HTTP e HTTPS. Usa un tcpdump - ti mostrerà il problema. Se non vedrai nessun token csrf nel tuo dump proxy-to-code, allora dai un'occhiata, forse è una pagina captcha o qualcosa del genere. Se in realtà vedi un token csrf in un dump, ma non nel tuo codice - il componente proxy è sicuramente un problema

    
risposta data 18.04.2016 - 14:50
fonte

Leggi altre domande sui tag