Trädvy Permalänk
Medlem
Registrerad
Sep 2013

Autologin på hemsida

Hej,

Har nyss ställt mig i bostadsköer och för att stå kvar i kön måste man ju logga in ibland. Tyckte det var jobbigt att behöva hålla koll på när man måste logga in, så jag började på ett PowerShell-script som sedan ska schemaläggas. Scriptet funkar finfint för Boplats, men Förbo och Alingsåshem är lite klurigare då de inte har samma enkla uppbyggnad där man bara hämtar elementet "username" och sedan sätter value till det man vill.

Någon som vet hur man kan göra?

# Create an Internet Explorer object $ie = New-Object -ComObject 'internetExplorer.Application' $ie.Visible= $true # Open all websites $ie.Navigate("https://nya.boplats.se/login/") # Wait till webpage is downloaded into the browsers. while ($ie.Busy){Start-Sleep -seconds 4;} $usernamefield = $ie.Document.getElementByID('username') $usernamefield.value = 'mail@gmail.com' $passwordfield = $ie.Document.getElementByID('password') $passwordfield.value = 'password' $link=$ie.Document.getElementsByName('login_button') $link[0].click()

Trädvy Permalänk
Medlem
Plats
Sundsvall
Registrerad
Dec 2006

Har ingen lösning, men tycker detta är jävligt komiskt! Man brukar ju säga.
"Anlita en lat person för jobbet, för de hittar alltid en lösning för att göra det enklare"
No hate, tycker detta var askul bara!

Tänkte, tar väl längre tid att göra ett script än att bara surfa till hemsida?
Skapa en bokmärkes-mapp till inloggningarna på respektive sida, å sen ladda alla sidor samtidigt.

Canon 70D | 2x Dell Ultrasharp 24" | i7 3770k | 16B | GTX 780

Trädvy Permalänk
Medlem
Plats
Halmstad
Registrerad
Apr 2003

Antar att tex Alingsåshem inte har statiska name taggar? Är det däri problemet ligger?

Iaf, kan du inte matcha <strong>Personnummer:</strong> och därefter lägga till value på nästkommande input field för deras HTML struktur är ju åtminstone densamma hela tiden.

Annars kan du hämta ID:et från <form> taggen, tex m713a0moduleform_1, där kan du sen ta bort allt efter & inklusive moduleform, allt före verkar ju användas som prepend för input name & ID taggarna, tex m713a0feu_input_username & m713a0feu_input_password

Hur kan syltkakor överleva i det vilda utan ögon?

Trädvy Permalänk
Inaktiv
Registrerad
Mar 2010

Dom flesta gör väl en HTTP POST? Bara att ta reda på vilka variabler du ska posta = klart

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2015

Jotack Alingsåshem alltså.. Mappar poäng sedan 07 för att jag glömde logga in. Nu är man tbx på typ 4 poäng.

LG G7 ThinQ
citera för svar

Trädvy Permalänk
Medlem
Registrerad
Sep 2013
Skrivet av Florrpan:

Har ingen lösning, men tycker detta är jävligt komiskt! Man brukar ju säga.
"Anlita en lat person för jobbet, för de hittar alltid en lösning för att göra det enklare"
No hate, tycker detta var askul bara!

Tänkte, tar väl längre tid att göra ett script än att bara surfa till hemsida?
Skapa en bokmärkes-mapp till inloggningarna på respektive sida, å sen ladda alla sidor samtidigt.

Haha jaa, men duvet så missar man att man skulle loggat in och sen sitter man där som @Genx031 och för börja om. Inte kuuul

Skrivet av JesperA:

Antar att tex Alingsåshem inte har statiska name taggar? Är det däri problemet ligger?

Iaf, kan du inte matcha <strong>Personnummer:</strong> och därefter lägga till value på nästkommande input field för deras HTML struktur är ju åtminstone densamma hela tiden.

Annars kan du hämta ID:et från <form> taggen, tex m713a0moduleform_1, där kan du sen ta bort allt efter & inklusive moduleform, allt före verkar ju användas som prepend för input name & ID taggarna, tex m713a0feu_input_username & m713a0feu_input_password

Skrivet av studiox_swe:

Dom flesta gör väl en HTTP POST? Bara att ta reda på vilka variabler du ska posta = klart

Jag är otroligt nybörjare på web-programmering, så jag är inte riktigt med på vad ni pratar om. Men skulle HTTP POST fungera bättre då?

Lyckades lösa mitt problem, och det var egentligen mest ett förvirrande errormeddelande i PowerShell-editorn som sa att attributet "value" inte fanns på elementet som gjorde att jag förstod fel. Om man sätter fokus på textfältet innan man modifierar value hittar den attributet och det går att sätta som innan.

Te.x för Alingsåshem:

#$usernamefield = $ie.Document.getElementByID('m713a0feu_input_username') #$usernamefield.focus() #$usernamefield.value = 'username' #$passwordfield = $ie.Document.getElementByID('m713a0feu_input_password') #$passwordfield.focus() #$passwordfield.value = 'password' #$button=$ie.Document.getElementByID('m713a0feu_btn_login') #$button.focus() #$button.click()

Trädvy Permalänk
Medlem
Registrerad
Dec 2002
Skrivet av Doctor Jones:

Haha jaa, men duvet så missar man att man skulle loggat in och sen sitter man där som @Genx031 och för börja om. Inte kuuul

Jag är otroligt nybörjare på web-programmering, så jag är inte riktigt med på vad ni pratar om. Men skulle HTTP POST fungera bättre då?

Lyckades lösa mitt problem, och det var egentligen mest ett förvirrande errormeddelande i PowerShell-editorn som sa att attributet "value" inte fanns på elementet som gjorde att jag förstod fel. Om man sätter fokus på textfältet innan man modifierar value hittar den attributet och det går att sätta som innan.

Te.x för Alingsåshem:

#$usernamefield = $ie.Document.getElementByID('m713a0feu_input_username') #$usernamefield.focus() #$usernamefield.value = 'username' #$passwordfield = $ie.Document.getElementByID('m713a0feu_input_password') #$passwordfield.focus() #$passwordfield.value = 'password' #$button=$ie.Document.getElementByID('m713a0feu_btn_login') #$button.focus() #$button.click()

Skulle tips om att få någon typ av meddelande att jobbet blivit utfört, så det inte failar och du märker det när det är försent.

[size="1"]*signatur raderad*, referrallänkar behöver vi inte gömma i signaturer (§8 marknadsföring)[/size] Till MOD: Ditt smartskafft, man gömmer inte något som är helt synligt!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2012
Skrivet av Doctor Jones:

Jag är otroligt nybörjare på web-programmering, så jag är inte riktigt med på vad ni pratar om. Men skulle HTTP POST fungera bättre då?

När du trycker på login knappen så skickar webbläsaren en POST request med parametrar utifrån de du skrivit in i tex user/pass falter. Istället bör du bara kunna skicka en post requesten själv. På så sätt behöver du inte hitta några element på sidan och du behöver inte trycka element.

På så sätt bör ditt program även fungera om de ändrar front end på sidan.

POST https://www.alingsashem.se/index.php?page=login
Post Data:
mact[FrontEndUsers%2Cm713a0%2Cdo_login%2C1]
m713a0returnid[87]
page[87]
m713a0feu_input_username[PERSNR]
m713a0feu_input_password[LÖSEN]
m713a0feu_btn_login[Logga+In]

Typ något liknande: (Eventuellt om alla parametrar behövs)

Intel Core i7 7700K 4,2GHz - MSI GeForce GTX 1080 Ti 11GB Gaming X - Corsair LPX 16GB, DDR4 3000Mhz - ASUS PRIME Z270-A - Fractal Design Define R5 - Cooler Master 212 EVO - Corsair AX860 80+ Platinum - A-DATA SSD Premier Pro SP900 128GB, Samsung 960 EVO 250GB - Kingston v400 120 GB - Windows 10 Pro 64-bit
2x Dell U2515H IPS 1440p - ath-m50x & Mod Mic - Asus STX - Oculus Rift + Touch

Trädvy Permalänk
Medlem
Plats
Halmstad
Registrerad
Apr 2003
Skrivet av Daavido:

På så sätt behöver du inte hitta några element på sidan och du behöver inte trycka element.

På så sätt bör ditt program även fungera om de ändrar front end på sidan.

Nja, ändras frontenden, tex m713a0feu_input_username, till m213a0feu_input_username så kommer scriptet såklart sluta fungera, därför man vill kolla upp elementen så inget har förändrats. Vore ju synd om man tappade sin plats i kö bara för att man inte kollat upp det innan man skickar POST datan.

Hur kan syltkakor överleva i det vilda utan ögon?

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Maj 2013
Skrivet av Florrpan:

Har ingen lösning, men tycker detta är jävligt komiskt! Man brukar ju säga.
"Anlita en lat person för jobbet, för de hittar alltid en lösning för att göra det enklare"
No hate, tycker detta var askul bara!

Tänkte, tar väl längre tid att göra ett script än att bara surfa till hemsida?
Skapa en bokmärkes-mapp till inloggningarna på respektive sida, å sen ladda alla sidor samtidigt.

Aldrig hört det uttrycket förut men nu när jag tänker efter stämmer det väldigt bra haha.
Har jobbat på diverse ställen förut där folk satt och gjorde hjärndött arbete som tog väldigt mycket tid.

Så när jag skulle göra det, i stället för att göra det la jag ner två tre dagar på att göra ett script som automatiserar allt. I slutändan sparar man ju mer tid på det.

Vilket TS säkert också gör beroende på hur länge han nu behöver stå i kö hehe.