Forum Programmation.python J’arrive pas à poster sur la tribune :(

Posté par . Licence CC by-sa
1
28
août
2015
#!/usr/bin/python3

import requests

#print (requests.get("https://linuxfr.org/board/index.xml").text)

mydata = {"Content-Type" :"application/x-www-form-urlencoded;", "Cookie" :"linuxfr.org_session=amdRVnQyQ******z09--603b6d541118c663c8cf7a7efc653fc6ec72c329; https=1", "Host" : "linuxfr.org"}

yo = requests.post("https://linuxfr.org/board", params=mydata, data="board[message]=test")

print (yo.status_code)

me sort :

422

(422 Unprocessable Entity (WebDAV; RFC 4918)
The request was well-formed but was unable to be followed due to semantic errors)

Any kind of help would be appreciated :/

Notez que j’ai mis des '*' pour cacher mon cookie…

  • # Pas assez d'*

    Posté par . Évalué à 2.

    ça flingue tout l'affichage, la valeur de linuxfr.org_session qui ne revient pas à la ligne…

    Sinon, pour le reste, aucune idée.

  • # Arf

    Posté par . Évalué à 2.

    Je risque pas d’y arriver comme ça c’est clair. Le cookie ne dure que le temps de la session, il faut le récupérer à chaque fois…

    Je posterais la solution si j’y arrive.

  • # serialisation

    Posté par . Évalué à 1. Dernière modification le 28/08/15 à 17:52.

    salut,

    Il faudrais voir si le cookie n'est pas généré par sérialisation, et si oui, quelle données sont utilisée.

    Je parle de sérialisation car dans un challenge de sécu sur un certain site, un cookie était généré par sérialisation utilisant certaines données

    ca donnait ça

    'a:2:{s:5:"login";s:10:"superadmin";s:8:"password";b:1;}'

  • # Youpi ça marche

    Posté par . Évalué à 4. Dernière modification le 28/08/15 à 19:22.

    Tout d’abord encore un grand merci à chrisix< qui m’a donné la solution.

    Plusieurs choses. Déjà j’utilisais le mauvais cookie, il y a un cookie dans les requêtes (et les réponses) GET qui portent le même nom et qui change à chaque fois. Ce n’est évidement pas ce cookie qu’il faut utiliser mais bien celui, unique, qui est utilisé pour une requête POST lorsqu’on envoie un message sur la tribune. Ensuite, la fonction requests.post s’utilise ainsi :

    yo = requests.post("https://linuxfr.org/board", headers=headers, cookies=cookies, data=data)
    

    headers, cookies et data sont des dictionnaires.

    Pour finir, il faut aussi que l’entête "Referer" soit présente.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.