[PYTHON] Da ich frei bin, mache ich eine "RPA Tool" Extra Edition

Einführung

Vielen Dank an alle. Das ist enp. Ich mag Sommer besser als Winter. Dieser Artikel ist ein Fortschrittsbericht für diejenigen, die von nun an versuchen, "RPA-Tools" zu erstellen. Bitte beachten Sie, dass darin nicht beschrieben wird, wie RPA- oder RPA-Tools erstellt werden. Dieses Mal möchte ich den RPA vorstellen, der als Erweiterung von # 3 erstellt wurde, da es sich um eine zusätzliche Ausgabe handelt. Es ist ein sehr egoistischer RPA, also fühlt es sich wie eine Grauzone an, aber danke für Ihre Zusammenarbeit.

Es ist ein Ärger!

Ja. Der Titel ist genau das. Ich denke, es gibt viele Leute, die das Gleiche denken.

Warum muss Mabinogi über den Browser gestartet werden?

Dies gilt nicht nur für Mabinogi, sondern auch für alle Spiele, die nur über einen Browser gestartet werden. __ Es ist schwierig, nacheinander zur Startseite zu gelangen! Ich will etwas tun! __ </ font> Also denke ich. __ Kann es automatisiert werden? __ __ Sie können sich jetzt automatisch mit # 3 anmelden. Daher können Sie sich bei Mabinogi anmelden. Alles was Sie tun müssen, ist auf die Schaltfläche zu klicken, um das Spiel zu starten! Ich fing an zu denken.

Dinge, die für die Implementierung benötigt werden

Ich werde sofort mit der Automatisierung beginnen, aber hier sind einige Dinge, die ich brauche. Deshalb möchte ich sie hier auflisten.

__ [Liste der für die Implementierung erforderlichen Dinge] __ __ ・ Python__ __ ・ Selen__ __ · ChromeDriver__ __ ・ PyOTP__ __ · Benutzerprofil, das das Spiel einmal gestartet hat (wichtig) __

Von Python bis PyOTP sind die Dinge, die Sie benötigen, um einen Browser automatisch zu betreiben. Das letzte "Benutzerprofil, das das Spiel einmal gestartet hat" wird verwendet, um ein bestimmtes Problem zu lösen. Ein Benutzerprofil ist eine Benutzerdatei __, die mit __Chrome synchronisiert ist.

Die größte Wand "Modaldialog"

Nun, lassen Sie es uns sofort implementieren. Es gibt jedoch ein großes Problem. Es ist die Existenz eines __modalen Dialogs __. Ein modaler Dialog ist ein Dialog __, der nur mit dem __-Dialog betrieben werden kann. Es fühlt sich an, als würde der Dialog gleich zusammenbrechen. Machen wir es etwas verständlicher. モーダルダイアログ.png Die obige Abbildung zeigt den fraglichen modalen Dialog. Während dieses Dialogfeld angezeigt wird, führt das Klicken auf Mabinogis Fan Art, Ankündigungen usw. zu nichts. Eine Person, die den __ -Dialog nur so bedienen kann, wird als modaler Dialog bezeichnet. __ __ __ Dieser Dialog wurde jedoch von Selen nicht erkannt. Es gibt eine Funktion von __selenium, die eine Schaltfläche im Dialogfeld drückt, aber nicht reagiert. Ich habe versucht, JavaScript zu verwenden, aber ich konnte die Schaltfläche nicht erhalten, da ich den Klassennamen überhaupt nicht kannte. Jetzt habe ich eine Frage an alle, die hier Mabinogi spielen. __ Hast du diesen Dialog gesehen? __ __ Ich denke, diejenigen, die Mabinogi zum ersten Mal gespielt haben, werden eine neue Erinnerung haben, aber diejenigen, die Mabinogi seit vielen Jahren spielen, sind bereits in Vergessenheit geraten. Ja, dieser Dialog wird normalerweise nicht nach dem zweiten __ angezeigt. __ Nun, nur diejenigen, die das Kontrollkästchen aktiviert haben. Warum verschwindet es dann? __ __ Wird es nicht von der Nexon-Seite gerettet? Wenn Sie denken, __ falsch __ </ font>. Es wird jedoch nicht auf der __web-Seite gespeichert. __ Die Webseite wird erstellt __ HTML, JavaScript usw. haben keine Funktion zum Speichern von Informationen </ font> __. Ich denke, es ist möglich, es in Kombination mit einer Datenbank zu speichern, aber es ist nicht üblich. __ Dann was? __ __ Die Antwort ist eine kleine Datei namens cookie. Sie haben vielleicht davon gehört. Ich werde nicht im Detail darüber sprechen, wie es funktioniert, aber es wird nicht angezeigt, solange ein Cookie mit der Aufschrift __ "Ich habe das Spiel einmal gestartet" angezeigt wird. </ font> __ Sie müssen sich nicht mehr mit modalen Dialogen oder allem befassen, was Sie nicht mehr verstehen. Daher wird __ "Benutzerprofil, das das Spiel einmal gestartet hat" wichtig. __ __ Weil ich die Kekse habe, die ich brauche.

Lernen Sie Chrome kennen

Ich weiß, dass ich Cookies verwenden kann, um modale Dialoge zu überwinden. Einige Leute mögen dies jedoch denken.

Muss ich mir die Mühe machen, ein Benutzerprofil zu verwenden?

Die Antwort ist ja. Da __Chrome Cookies nach Benutzerprofil verwaltet, ist es __. Dieses "vom Benutzerprofil verwaltet" ist jedoch nur mein Eindruck. __ __ Bitte beachten Sie daher, dass dies nicht korrekt ist. Der Grund, warum ich das Gefühl hatte, dass es "vom Benutzerprofil verwaltet" wurde, ist, dass das Dialogproblem nicht durch einfaches Abrufen des Cookies mit __selenium __ gelöst wurde. Ich dachte auch, weil die Cookies, die ich habe, für jedes __user-Profil unterschiedlich sind. Außerdem habe ich versucht, das standardmäßig bereitgestellte Benutzerprofil zu verwenden, es jedoch nicht verwendet, da dies zu Unannehmlichkeiten führte. Die Unannehmlichkeit ist, dass __ das Programm beschädigt wird, wenn Chrome geöffnet ist. Anscheinend wird ein Fehler ausgegeben, wenn das Verzeichnis, auf das verwiesen wird, abgedeckt ist. __was zur Hölle. __ __ Deshalb haben wir ein Verzeichnis für einzelne Benutzerprofile vorbereitet.

Endlich umgesetzt

Ich habe bisher mit Gudaguda gesprochen, aber der Punkt ist, dass ich hoffe, dass Sie die folgenden zwei Punkte unterdrücken können. __ · Benötigen Sie ein Cookie, um das Dialogproblem zu lösen __ __ · Sie können das Dialogproblem lösen, indem Sie ein Benutzerprofil mit den erforderlichen Cookies verwenden. __ Ja. Wir werden es basierend auf diesen beiden Punkten umsetzen. Das Programm ist wie folgt.

nexon.py


#Module importieren etc.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import chromedriver_binary
import pyotp
import time

#Treibereinstellungen
options = Options()
PROFILE_PATH = r"Individuell vorbereitetes Benutzerprofilverzeichnis"
options.add_argument('--incognito')  #Öffnen Sie den Browser im Inkognito-Modus
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument("--user-data-dir=" + PROFILE_PATH)   #Angeben des Benutzerprofilverzeichnisses
options.add_argument("--profile-directory=Profile 1")   #Angeben eines Benutzerprofils

#Treiberbezeichnung
chrome = webdriver.Chrome(options=options)

chrome.get("https://login.nexon.co.jp/login/?gm=mabinogi")   #Gehen Sie zur Anmeldeseite
chrome.implicitly_wait(10)   #Warten Sie, bis das gewünschte Element angezeigt wird (bis zu 10 Sekunden).

#Informationen für die Anmeldung erforderlich
user_name = "user_name"
password = "password"

#Rufen Sie ein Textfeld auf, um Anmeldeinformationen einzugeben
element_user = chrome.find_element_by_id("NexonID")
element_password = chrome.find_element_by_id("Password")
element_totp = chrome.find_element_by_id("OTP")

#Benutzername usw. eingeben
element_user.send_keys(user_name)
element_password.send_keys(password)

#Einmalpasswort generieren
totp = pyotp.TOTP("Alphabete, die beim Festlegen eines Einmalkennworts verwendet werden")
#Stellen Sie das Einmalpasswort im Voraus ein
#Notieren Sie sich die erforderlichen alphanumerischen Zeichen

#Geben Sie das Einmalpasswort ein und drücken Sie zur Bestätigung die Eingabetaste
element_totp.send_keys(totp.now())
element_totp.send_keys(Keys.ENTER)

#Klicken Sie auf die Schaltfläche zum Starten des Spiels
btn = chrome.find_element_by_xpath("//div[@id='left']/div[@class='bt-login']/div[@class='btn-web-gamestart']/a")
btn.click()

#Warten Sie (weil das Spiel nicht ohne Wartezeit gestartet wurde)
time.sleep(10)

#Schließen Sie Chrome
chrome.quit()

Cookies scheinen verfügbar zu sein, wenn Sie sie in Ihrem Benutzerprofil ausführen und nichts tun müssen. Bitte beachten Sie auch, dass das Spiel nicht gestartet wird, wenn Sie den Headless-Modus verwenden. Außerdem werden Sie um die Administratorberechtigung gebeten, um das Spiel zu starten. Klicken Sie selbst darauf. Der Grund ist, dass es nicht der Gerichtsbarkeit unterliegt, die mit einem Webbrowser betrieben werden kann. Aber leider __ hat dieses Programm einen fatalen Nachteil. __ __ __ Das Dialogproblem tritt erneut auf, wenn das Cookie abläuft. __ __ Dann müssen Sie das Spiel auch selbst starten und Ihr Benutzerprofil verwenden, um Cookies zu erstellen.

Schließlich

Vielen Dank, dass Sie bis zum Ende bei uns bleiben. Wie war die Extra Edition? Ich habe viel mit Gudaguda gesprochen, aber ich hoffe, dieser Artikel hilft etwas. Bitte beachten Sie jedoch, dass es sich um ein ziemlich graues Zonenprogramm handelt. Das ist alles für enp.

[Ergänzung 8/15] Ich habe das Programm ein wenig geändert. Die Änderung erfolgt in options.add_argument ('--incognito'). Diese Einstellung öffnet Chrome im geheimen Modus. Ich habe Artikel wie "Das System funktioniert weniger wahrscheinlich" gelesen, um herauszufinden, warum es im geheimen Modus geöffnet wird, aber ich bin es nicht. Ich wollte einfach keine Geschichte führen. Persönlich hasse ich die Situation, in der "meine Informationen ohne mein Wissen durchgesickert sind". Deshalb möchte ich normalerweise nicht viel Geschichte behalten. Ich möchte meine Geschichte nicht sehen, ohne es zu wissen. Sie können den Verlauf separat anzeigen. Aber ist es nicht anders? Was kann ohne Erlaubnis gesehen werden. Deshalb versuche ich, keine Geschichte zu hinterlassen, um das Risiko auszuschließen, ohne Erlaubnis gesehen zu werden. Ich habe etwas Seltsames geredet, aber es ist in Ordnung, wenn Sie verstehen, dass "ich das Programm ein wenig geändert habe"!