Obtención de 200 respuestas pero no inicio de sesión utilizando la biblioteca de solicitudes de Python

He tratado de raspar la lista de seguidores de la cuenta de Twitter. Para eso, se requiere autenticación. Así que usé la biblioteca de solicitudes para fines de autenticación. El problema que estoy obteniendo es que, cuando bash autenticarme, obtengo 200 respuestas pero la autenticación no se realiza. El código es:

import requests from bs4 import BeautifulSoup import json payload={ "session[username_or_email]":"*****************", "session[password]":"**********************", "authenticity_token":"aa3520020157738bdabb6d60f2e02894c6c85689", "ui_metrics":'{"rf":{"a67dd0828000993f688a64a8238f647dd8ef987feb0db5979725fc7e304c3989":-250,"a4cd98aa5fd1d026bfded286fc24eb6ac9cf01a65b789ade51b68558cb0f6ae0":-21,"a88c7b5bdeb04ce3cf55df08c0f981f99df760b9348680c735fbff5b60ad054f":51,"a5e59c69fb04ab30f2f8468030c31ca1150f4265e4c2a35dbb1b67b85be6954f":-68},"s":"QdcvZJ9RhjLcVcW2N_pDt5j5AKQJCkqnh9caYV5ykW35tRpQc_RN5s_VefN2uVCONpXf-qZa-fr8VtCAFrtiOf2f6PhloU2GyxLDN38wGppFNWhb4psCr7x-kibioS9PDxWZF1pe3FM-MOz9YtIQrWxbmEAWnRTK3gUn-1nv4kTFDa159YxJoXiYt43g41sRUJWezJI2yJaECnO1ARbkNAPKrMndxRAcq_5qSFpT8CqzEUvBKPMdFMKeUrzeEecqmx632lTV1NlucVIvV9co3Y3Rk7CtURoaiCwsjTED1brU4XAY3VwsTEuNRUYZqirRNZrYQBCHqsMh5FV_UHpO2QAAAWE40pmN"}', "scribe_log":"", "redirect_after_login":"", "authenticity_token":"aa3520020157738bdabb6d60f2e02894c6c85689", "return_to_ssl":"", "remember_me":"1", "lang":"", "redirect":"" } headers={ "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding":"gzip, deflate, br", "accept-language":"en-US,en;q=0.9", "cache-control":"max-age=0", "cookie":'moments_profile_moments_nav_tooltip_self=true; syndication_guest_id=v1%3A150345116906281638; eu_cn=1; kdt=QErLcBT9OjM5gjEznmsRcHlMTK6biDyAw4gfI5ro; _ga=GA1.2.1923324433.1496571570; tfw_exp=0; __utma=43838368.1923324433.1496571570.1516764481.1516764481.1; __utmz=43838368.1516764481.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); remember_checked_on=0; personalization_id="v1_Iq7dc3Mq746/e91mchhhJg=="; guest_id=v1%3A151698504007256847; ads_prefs="HBERAAA="; _twitter_sess=BAh7CSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7ADoPY3JlYXRlZF9hdGwrCF5%252F0jhhAToMY3NyZl9p%250AZCIlN2ZmZjExM2NkYjUzODEzZDNiNDE4YWI3NGRhZTAxOTc6B2lkIiU3YWFl%250AZjVhNDY1OWJlNzdiN2RiYjEzNjIwYWVjMGMyMQ%253D%253D--d69792331ec3a3b6c9d994a07f2159bfd5697089; ct0=ecc095f3a61b1c77279538584cb6f20e; _gid=GA1.2.253357133.1517076775; _gat=1', "referer":"https://twitter.com/login", "upgrade-insecure-requests":"1", "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" } str=payload["ui_metrics"] x=json.dumps(str) y=json.loads(str) payload["ui_metrics"]=y res = requests.post("https://twitter.com/login",data=payload,headers=headers) r = requests.get("https://twitter.com/following") soup = BeautifulSoup(r.text,"html.parser") print(res.status_code) print(r.url) print(soup.prettify()) for item in soup.find_all({"class":"u-textInheritColor js-nav"}): print(item.text) 

Estoy recibiendo 200 respuestas para el código de estado. ¿Cómo resolver este problema? NOTA: No estoy usando ninguna API. Quiero autenticar utilizando la biblioteca de solicitudes.

Prueba esto. Debería llegar allí:

 import requests from bs4 import BeautifulSoup with requests.Session() as s: r = s.get("https://twitter.com/login") soup = BeautifulSoup(r.text,"lxml") token = soup.select_one("[name='authenticity_token']")['value'] payload={ 'session[username_or_email]':'your_email', 'session[password]':'your_password', 'authenticity_token':token, 'ui_metrics':'{"rf":{"c6fc1daac14ef08ff96ef7aa26f8642a197bfaad9c65746a6592d55075ef01af":3,"a77e6e7ab2880be27e81075edd6cac9c0b749cc266e1cea17ffc9670a9698252":-1,"ad3dbab6c68043a1127defab5b7d37e45d17f56a6997186b3a08a27544b606e8":252,"ac2624a3b325d64286579b4a61dd242539a755a5a7fa508c44eb1c373257d569":-125},"s":"fTQyo6c8mP7d6L8Og_iS8ulzPObBOzl3Jxa2jRwmtbOBJSk4v8ClmBbF9njbZHRLZx0mTAUPsImZ4OnbZV95f-2gD6-03SZZ8buYdTDkwV-xItDu5lBVCQ_EAiv3F5EuTpVl7F52FTIykWowpNIzowvh_bhCM0_6ReTGj6990294mIKUFM_mPHCyZxkIUAtC3dVeYPXff92alrVFdrncrO8VnJHOlm9gnSwTLcbHvvpvC0rvtwapSbTja-cGxhxBdekFhcoFo8edCBiMB9pip-VoquZ-ddbQEbpuzE7xBhyk759yQyN4NmRFwdIjjedWYtFyOiy_XtGLp6zKvMjF8QAAAWE468LY"}', 'scribe_log':'', 'redirect_after_login':'', 'authenticity_token':token, 'remember_me':1 } headers={ 'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'content-type':'application/x-www-form-urlencoded', 'origin':'https://twitter.com', 'referer':'https://twitter.com/login', 'upgrade-insecure-requests':'1', 'user-agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } res = s.post("https://twitter.com/sessions",data=payload,headers=headers) soup = BeautifulSoup(res.text,"lxml") for item in soup.select(".tweet-text"): print(item.text)