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