[PYTHON] Da ich frei bin, werde ich ein "RPA-Tool" # 3 Selenium Edition erstellen. Automatische Anmeldung

Einführung

Jeder, es ist ungefähr ein Monat her. Das ist enp. Ich trage eine Brille. Dieser Artikel ist ein Fortschrittsbericht für alle, die versuchen, ein "RPA-Tool" zu erstellen. Bitte beachten Sie, dass darin nicht beschrieben wird, wie RPA- oder RPA-Tools erstellt werden. (Vielleicht lege ich ein wenig Sauce drauf. Das hängt von meiner Stimmung ab.) Diesmal ist Teil 1, um mit Selen auszukommen. Das einzige, was ich getan habe, war "Login-Operation", aber es war ziemlich tiefgreifend. Es wird wieder ein langer Artikel sein, aber ich würde es begrüßen, wenn Sie mit mir auskommen könnten.

Was kann Selen?

Lassen Sie uns zunächst Selen kennenlernen. Selen ist ein Tool, das den Browser direkt mit dem Programm __ bedient. __ __ Anstatt den Mauszeiger zum Bedienen des Browsers zu verwenden Es ist, als würde Selen Befehle an den Browser senden, um Operationen auszuführen. So können Sie andere Arbeiten ausführen, während Sie Ihren Browser auf Selen ausführen. (Ich habe den mit langer Betriebszeit nicht ausprobiert, daher habe ich nicht überprüft, wie er tatsächlich funktioniert.)

Melden wir uns mit Selen Nico Nico Video Edition an

Ja. Von hier aus automatisiert das Hauptthema __selenium die Anmeldung. __ __ Der Grund für die Automatisierung der Anmeldung ist, dass ich dachte, es wäre einfach und perfekt, um Selen zu üben. __ __ Sie können sich mit grundlegenden Aktionen wie dem Eingeben eines Textfelds oder dem Klicken auf eine Schaltfläche anmelden. Aber __ war nicht so süß. Ich werde später darüber sprechen. __ </ font>

Jetzt melden wir uns sofort an. Melden Sie sich zunächst bei Nikodo an. Das Folgende ist der Anmeldebildschirm von Nikodo. ニコ動のログイン画面 Nun, es sieht so aus. Es gibt auch ein Login mit Google unten, aber ich werde es dieses Mal nicht verwenden, also poste ich es nicht. (Ich hatte Angst vor dem Copyright des Logos)

Als Fluss, __1. Zur Anmeldeseite springen. __ __ __2. Geben Sie Ihre E-Mail-Adresse in das Textfeld oben ein __ __3. Geben Sie Ihr Passwort in das Textfeld unten ein __ __4. Klicken Sie auf die Anmeldeschaltfläche __ Korrekt.

Meine Implementierungsmethode ist __ "Setzen Sie die Prozedur, die ich normalerweise mache, so in die Programmierung, wie sie ist" __. Also __ Ich werde den obigen Ablauf so implementieren, wie er ist. __ __

Der Code ist unten.

slogin_niconico.py


#Treiberimport
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import psutil

chrome = webdriver.Chrome(r".\driver\chromedriver.exe")
 
#Gehen Sie zur Anmeldeseite
chrome.get("https://account.nicovideo.jp/login?site=nicoaccount&next_url=%2Fmy%2Faccount%3F&time=1593735684")

#Für die Anmeldung erforderliche Variablen
user_name = "user_name"
password = "password"

#Holen Sie sich Textfelder und Anmeldeschaltflächen
element_user = chrome.find_element_by_id("input__mailtel")
element_password = chrome.find_element_by_id("input__password")
element_logbtn = chrome.find_element_by_id("login__submit")

#Geben Sie die Adresse und das Passwort in das Textfeld ein
element_user.send_keys(user_name)
element_password.send_keys(password)

#Drücken Sie die Login-Taste
element_logbtn.click()

#Beenden Sie den Chromedriver-Prozess
p = psutil.Process(chrome.service.process.pid)
p.terminate()

Etwas wie das. Alles, was Sie wirklich tun müssen, ist zur Anmeldeseite zu springen, das Textfeld einzugeben und die Anmeldeschaltfläche zu drücken. Der letzte Schritt besteht darin, das Problem zu lösen, dass der Treiber aufgrund der Spezifikationen auch nach Programmende in Bewegung bleibt. Wir verwenden die Prozess-ID, um den Prozess des Treibers zu schließen. Wenn Sie weitere Bedenken haben, überprüfen Sie dies bitte selbst! Es ist nur ein Fortschrittsbericht.

Melden wir uns mit der Selenium Amazon Edition an

Nachdem Sie sich bei Nikodo angemeldet haben, melden wir uns bei Amazon an. __Hmm? Was ist anders als Nico Dou? __ Das könnte man denken. __ Der Fluss ist sicherlich fast der gleiche wie bei der Bewegung von Nico __. Amazon fügt jedoch ein wenig Arbeit hinzu. amazonのログイン画面.png __ Ja! Zweistufige Zertifizierung! __ </ font> Ein Einmalkennwort ist erforderlich. (Nikodo hat auch eine zweistufige Zertifizierung, aber diesmal habe ich sie als Nicht-Version verwendet) Ich habe einen Monat gebraucht, um herauszufinden, wie ich durch dieses Einmalpasswort komme. Natürlich hat Selen keine gute Eigenschaft, um die Bestätigung in zwei Schritten zu überstehen. Das war ein Problem ... Die Geschichte von hier wird also in einem zweistufigen Rekord für den Durchbruch bei der Zertifizierung gesendet, einem luxuriösen Doppelfass.

Strategie.1 Verwendung einer App, die ein Einmalkennwort generiert

Diese Strategie besteht darin, __ mithilfe des Unterprozessmoduls ein Einmalkennwort von einer externen App wie dem Google Authenticator von Google abzurufen. Es ist jedoch schwierig, Apps zu verarbeiten, die auf EXE ausgeführt werden, z. B. Google Authenticator. Daher habe ich versucht, __ mithilfe einer App zu implementieren, die an der Eingabeaufforderung __ ausgeführt wird. Ich habe die folgenden zwei gefunden.

  • oath-toolkit
  • authenticator

Ich werde es mit einem dieser beiden implementieren, aber das, das ich gewählt habe, ist authenticator. Der Grund ist __, weil es einfach als Lizenz zu verwenden war. MIT-Lizenz ist die beste. Der Authentifikator hat jedoch auch einen Nachteil. Das heißt, es endet nicht für immer, es sei denn, Sie beenden es mit __Ctrl-C. __ __ Sie können die Ausgabe von __authenticator erst abrufen, wenn sie für immer endet. __ __ Hier bietet sich die Terminierungsmethode des __subprocess-Moduls an. __ __ Sie können __authenticator mit der terminate-Methode zum Beenden zwingen. __ __ Dies ist der einzige Weg, dies zu tun, da Sie die Ausgabe erhalten können, wenn Sie fertig sind. Das Ergebnis der kombinierten Technik aus Authentifikator und Unterprozessmodul ist wie folgt.

Enter passphrase:

Warum! !! Warum kann ich kein Einmalpasswort bekommen?

Der Grund scheint __ zu sein. Ich kann die Ausgabe des unterbrochenen Teils __ nicht erhalten. Es scheint, dass nur der Teil Passphrase eingeben abgerufen werden kann, da das Warten auf Eingabe später erfolgt. Es kann anders sein. Wichtig hierbei ist, dass das Unterprozessmodul __ das vom Authentifikator __ </ font> generierte Einmalkennwort nicht abrufen kann. Um es klar auszudrücken, es ist __Betriebsfehler __. Ich habe gelernt, wie man das Unterprozessmodul benutzt. Etwa einen Monat.

Strategie.2 Sie sollten es selbst generieren

Diese Strategie ist __RPAs eigene Einmalkennwortgenerierung __. Korrekt. __ Es ist eine Idee der Gehirnmuskulatur, dass ich einen Typ wie einen Authentifikator in RPA integrieren werde, weil es bereits problematisch ist. __ __ Wenn RPA selbst ein Einmalkennwort generieren kann, ist alles gelöst. Keine Notwendigkeit für externe Apps. Hier kommt die __pyotp-Bibliothek ins Spiel. __ __ Diese Bibliothek wird beim Implementieren der zweistufigen Authentifizierung in Python verwendet, diesmal jedoch zum Durchbrechen der zweistufigen Authentifizierung. Die Verwendung ist wie folgt.

#Pyotp-Bibliothek importieren
import pyotp

#Einmalige Passwortgenerierung
totp = pyotp.TOTP("Beim Einrichten von Google Authenticator einzugebende Alphabete")
totp.now()

Erstaunlich einfach!

Ich bin überrascht, dass Sie damit das Einmalpasswort durchbrechen können. Ein zusätzlicher Monat der Anstrengung bleibt als Traurigkeit. Es wurde bestätigt, dass es tatsächlich funktioniert. Die __Operation war erfolgreich! __ Ich musste die Rückhand dieser Anwendung nicht verwenden.

Dies ist das Ende des Kampfes, die zweistufige Zertifizierung zu durchbrechen. Nun, es war ein tiefer Inhalt, den ich tat. Den Teilprozess habe ich nicht besonders benutzt. Nachdem Sie so weit gekommen sind, müssen Sie nur noch ein Programm schreiben. Das Programm, das ich geschrieben habe, ist wie folgt.

slogin_amazon.py


#Treiberimport
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import psutil
import pyotp

chrome = webdriver.Chrome(r".\driver\chromedriver.exe")

#Gehen Sie zur Anmeldeseite
chrome.get("https://www.amazon.co.jp/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.co.jp%2F%3Fref_%3Dnav_signin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=jpflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&")

#Für die Anmeldung erforderliche Variablen
user_name = "user_name"
password = "password"

#Holen Sie sich das Textfeld auf der ersten Seite
element_user = chrome.find_element_by_name("email")

#Geben Sie Ihre E-Mail-Adresse ein (drücken Sie die Eingabetaste)
element_user.send_keys(user_name)
element_user.send_keys(Keys.ENTER)

#Holen Sie sich das Textfeld auf der zweiten Seite
element_password = chrome.find_element_by_name("password")

#Passwort eingeben (Enter drücken)
element_password.send_keys(password)
element_password.send_keys(Keys.ENTER)

#Einmalige Passwortgenerierung
element_totp = chrome.find_element_by_name("otpCode")
totp = pyotp.TOTP("Beim Einrichten von Google Authenticator einzugebende Alphabete")

#Einmalpasswort eingeben (Enter drücken)
element_totp.send_keys(totp.now())
element_totp.send_keys(Keys.ENTER)

#Beenden Sie den Chromedriver-Prozess
p = psutil.Process(chrome.service.process.pid) 
p.terminate()

Ich fühle mich so. Anstatt auf die Schaltfläche zu klicken, habe ich sie diesmal durch Drücken der Eingabetaste implementiert. Das ist alles was ich diesmal gemacht habe.

Was Sie tun müssen, um das RPA-Tool zu implementieren

Nachdem ich die Automatisierung der Anmeldung durchlaufen hatte, bekam ich ein wenig Verständnis für die Spezifikationen von Selen. In diesem Artikel möchte ich die Inhalte auflisten, die sich auf die Implementierung von RPA-Tools in dieser Zeit beziehen. Unten folgen die Bulletins.

--_ Sie müssen Ihren Browser ausgewählt haben, um den Treiber anzugeben. __ __ --_ Sie müssen den Klassennamen und den ID-Namen eingeben, um das Textfeld zu erhalten. __ __ --_ Sie müssen aufgefordert werden, auszuwählen, was Sie zum Abrufen des Textfelds usw. verwenden möchten. __ __ --_ __ In jedem Textfeld muss angegeben werden, was Sie eingeben möchten. __ __ --_ Wenn Sie eine Bestätigung in zwei Schritten benötigen, müssen Sie ein Verfahren wie das einmalige Einrichten von Google Authenticator für jedes Konto durchführen. __ __ ――_ Der Entwickler muss beispielsweise den Klassennamen senden, damit er von Personen verwendet werden kann, die nicht programmieren können. __ __ --_ Wenn Sie mit dem Treiber fertig sind, müssen Sie den Prozess abbrechen. __ __

Soweit ich das beurteilen kann.

Schließlich

Vielen Dank, dass Sie bis zum Ende bei uns bleiben. Ich habe die Quelle gepostet, die ich zum ersten Mal geschrieben habe. Wie war es? Das einzige, was ich diesmal gemacht habe, war "Automatisierung der Anmeldung", aber es war eine Herausforderung. Ich denke, der nächste Artikel wird "Lass uns mit Selen Teil 2 auskommen" sein, also danke. Das ist alles für enp.

[Zusatz] Wir haben den Hinweis auf die Quellenkorrektur erhalten und übernommen. Danke, Shiracamus. Wenn es ein Verzeichnis gibt, das mit n usw. beginnt, es sei denn, es handelt sich um eine rohe Zeichenfolge, Es besteht das Risiko, dass es nicht funktioniert, da es nicht als normal erkannt wird. Es mag die Basis sein, aber es war eine sehr wertvolle Meinung für mich.