El sitio web no proporciona cookies (csrf token) cuando se conecta a través de un proxy. ¿Por qué / cómo?

0

El siguiente código de Python debería capturar un CSRF toka> cookie de Instagram.com, pero recibo un mensaje de error al ejecutar el programa a través de cualquier tipo de proxy HTTPS o SOCKS5, informándome que no se proporciona la cookie CSRF.

Si se comenta s.proxies para que el programa no se ejecute a través de un proxy, funciona bien sin error, y Instagram.com proporciona una cookie de token CSRF.

Entonces, mi pregunta es: ¿cómo detecta Instagram que estoy ejecutando el programa desde un proxy? En otras palabras, ¿cómo se diferencia entre una solicitud normal y una solicitud que se ejecuta a través de 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
    
pregunta user107978 18.04.2016 - 13:45
fuente

1 respuesta

0

Es simple =) En el caso de no proxy, está rastreando todas las redirecciones usted mismo , por lo que no hay problema para manejarlo. Un proxy puede ser complicado ya que el proxy en sí mismo (no es un caso de Tor, pero hay programas que se comportan un poco raros), por lo que el componente proxy Para su idioma puede ser. Especialmente sucede con frecuencia con los proxies HTTP y HTTPS. Use un tcpdump - le mostrará el problema. Si no ve ningún token csrf en su volcado de proxy a su código, entonces eche un vistazo, tal vez sea una página captcha o algo así. Si realmente ve un token csrf en un volcado, pero no en su código, el componente proxy es un problema seguro

    
respondido por el Alexey Vesnin 18.04.2016 - 14:50
fuente

Lea otras preguntas en las etiquetas