IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Actions sur un site internet


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut Actions sur un site internet
    Hello 🙂 Je me permets de vous appeler à l'aide !
    Je commence tout juste à manipuler python, pour m'entrainer je me suis fixé comme objectif d'automatiser des actions sur un site internet (toutes les 3 heures, lancer une suites d'action pour valider un "vote").

    J'ai réussi à me loguer sur le site internet avec identifiants, mdp, token avec la fonction requests.post
    Mais vladadam, je suis bloqué depuis 2 jours...

    J'ai des actions à réaliser sur le site mais mes requests.session.post ne fonctionnent pas :/
    J'ai vu passer une erreur (405 dans un print) - lors de la navigation au seins du site.

    Si vous avez une piste pour éclairer ma lanterne, je vous en remercierais !

    Je début, j'ai récupérer des parties de code à droite et à gauche. Le code est sans doute très moyennement structuré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    import requests
    from requests import Session
    from bs4 import BeautifulSoup as bs
    import time
    import json
     
     
    with Session() as s:
        url = "https://moonflyff.fr/"
        log = "user/login"
        vote = "vote"
        headers_login = {
            "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
            "Origin": url,
            "Referer": url
        }
        site = s.get(url + log)
        bs_content = bs(site.content, "html.parser")
        token = bs_content.find("input", {"name":"_token"})["value"]
        login_data = {"email":"Test0",
            "password":"Test0000", 
            "_token":token
            }
        s.post(url + log,login_data,headers_login)
        vote_page = s.get(url + vote)
        #print(vote_page.text)
     
        headers_personnage = {
            "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
            "Origin": url,
            "Referer": url + vote
            }
        bs_content_vote = bs(vote_page.content, "html.parser")
        personnage = bs_content_vote.find("select", {"name":"character"}).find("option")["value"]
        personnage_data = {"character": personnage}
        #print(personnage_data)
        #r_1 = s.post(url + "update_character", personnage_data, headers_personnage)
        r_1 = s.post("https://moonflyff.fr/update_character", json={"character":"Cobra"})
        print(r_1.text)
     
     
        time.sleep(3)
        #s.get(url + vote)
        id_user = bs_content_vote.find("li", {"class":"text-white"}).find("strong").text
        personnage_validation = {"user": id_user}
        #print(personnage_validation)
        s.post(url + "server/1", personnage_validation,headers_personnage)
        #s.post(url + "/server/1", data = personnage_validation)
        time.sleep(3)
        s.post(url + "server/1/done", personnage_validation,headers_personnage)
        #s.post(url + "server/1/done", personnage_validation)
        time.sleep(4)
        #s.get(url + vote)
        print(vote_page.text)
    Nom : 1.png
Affichages : 462
Taille : 1,54 Mo
    Nom : 2.jpg
Affichages : 457
Taille : 181,9 Ko
    Nom : 3.png
Affichages : 454
Taille : 1,43 Mo

    Le résultat doit être soit :
    - Ok (voir cf : screen 4)
    - not ok (vous avez déjà voté il y a moins de 3 heures)

    Merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    405 c'est un retour du serveur ... on ne connait pas l'api donc pas possible de te répondre, il peut manquer un entête ou fait exprès car le site ne veut pas de robots ...

    A toi de faire des try...except autour de tous tes appels POST pour au minimum afficher l'erreur

    j'ai des doutes sur ta dernière ligne print(vote_page.text), "vote_page" est répupérée dès le début donc 36 actions sur le serveur ne vont rien changer à cette variable. Tu n'as donc pas véritablement de retour sur tes actions

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut
    Merci pour ton retour.

    J'ai eu ce message d'erreur :
    après mon test de print(r_0.text) :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h1 class="display-2">Error 405</h1>
            <h2 class="mb-4">An error occurred. Please try again.</h2>
     
            <a href="https://moonflyff.fr" class="btn btn-secondary">Home</a>
        </main>
    </div>


    Effectivement, la dernière ligne était là pour voir ce que j'avais à la fin, dans l'espoir de voir ou non mon message de validation ou d'invalidation du vote.
    Car nous restons sur la même page, l'url ne change pas même après les POST.

    J'ai lu qu'il y avait peut-être une notion de json ou de cookies/headers dans cette erreur 405.

    J'ai effectué différents tests, mais je viens de commencer et je ne sais pas trop comment orienter mes tests...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    import requests
    from requests import Session
    from bs4 import BeautifulSoup as bs
    import time
    import json
     
     
    with Session() as s:
        url = "https://moonflyff.fr/"
        log = "user/login"
        vote = "vote"
        headers_login = {
            "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
            "Origin": url,
            "Referer": url
        }
        site = s.get(url + log)
        bs_content = bs(site.content, "html.parser")
        token = bs_content.find("input", {"name":"_token"})["value"]
        login_data = {"email":"Test0",
            "password":"Test0000", 
            "_token":token
            }
        s.post(url + log,login_data,headers_login)
        vote_page = s.get(url + vote)
        #print(vote_page.text)
     
        headers_personnage = {
            "Accept" : "application/json, text/plain,*/*",
            "Accept-Encoding" : "gzip, deflate, br",
            "Accept-Language" : "en-US,en;q=0.5",
            "Connection" :"keep-alive",
            "Content-Lenght" : "26",
            "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
            "Origin": "https://moonflyff.fr/",
            "Referer": "https://moonflyff.fr/vote",
            "Content-Type" : "application/json",
            "X-Requested-With" : "XMLHttpRequest"
            }
        bs_content_vote = bs(vote_page.content, "html.parser")
        personnage = bs_content_vote.find("select", {"name":"character"}).find("option")["value"]
        personnage_data = {"character": personnage}
        r_0 = s.post(url + "update_character", data=personnage_data, headers=headers_personnage, allow_redirects=True)
        print(r_0.text)
     
        """print(r_0.content)
        id_user = bs_content_vote.find("li", {"class":"text-white"}).find("strong").text
        personnage_validation = {"user": id_user}
        r_1 = s.head(url + "server/1", data = personnage_validation, headers=headers_personnage, allow_redirects=True)
        print(r_1.content)
        time.sleep(1)
        r_2 = s.head(url + "server/1/done", data = personnage_validation, headers = headers_personnage, allow_redirects=True)
        print(r_2.content)"""
    je viens de tester celui ci mais toujours pas concluant...

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Comme dit plus haut, on ne va pas deviner l'erreur ! (un token à passer, ... ?)
    Si c'est permis pour ce site, c'est a toi de les contacter et demander des infos sur l'api
    Si pas permis, on ne va pas t'aider à les pirater (puisque tu es "chef de projet", tu peux le comprendre)

    ici, ce n'est pas une véritable erreur python (si je comprends) mais une méconnaissance de leur serveur

  5. #5
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Décembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2021
    Messages : 3
    Par défaut
    Je ne vois pas forcément la finalité de ton commentaire précédent.
    J'ai précisé dès le départ mon statut de novice.
    Ce qui entraîne, bien évidemment, une méconnaissance de beaucoup de termes.

    Je ne demandais pas de réponse toute prête, mais des pistes de réflexions pour apprendre et m'entraîner, comme dit plus haut
    Donc il n'y a pas vraiment besoin d'utiliser un thon, relativement, condescendant dans la minière de répondre.

    Je tiens quand même à te remercier pour le temps que tu auras pris pour écrire ton premier commentaire, qui était vraiment constructif

Discussions similaires

  1. Comment mettre de la publicité sur un site internet ?
    Par Destiny dans le forum Publicité
    Réponses: 23
    Dernier message: 22/12/2011, 23h27
  2. forcer une police speciale sur un site internet
    Par nico_web dans le forum Autres langages pour le Web
    Réponses: 5
    Dernier message: 24/02/2011, 00h24
  3. créer un formulaire d'ajout de produits sur 2 sites internet
    Par LaurentAccess dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/01/2008, 12h50
  4. Son vidéo sur les sites Internet ?
    Par grospierre dans le forum Audio
    Réponses: 9
    Dernier message: 16/09/2007, 17h38
  5. Statistique sur un Site Internet
    Par kmayoyota dans le forum ASP
    Réponses: 1
    Dernier message: 19/08/2005, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo