PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Button get Link?



Bi0sh0k
06.03.2018, 02:04
Hallo Community,

gibt es eine Möglichkeit auf einer Website den Link eines Buttons auszulesen?
Ich habe auf einer Website (z.B. https://oxidemod.org/plugins/wipeprotection.2722/) einen Button von dem ich den Link auslesen muss,
da sich dieser immer wieder ändert sobald eine Source vom Dev geupdated. Zusätzlich möchte ich diese Datei wenn möglich silent runterladen. Wenn man so will möchte ich ein Predefined Script das mir immer die aktuellsten Plugins zieht von den jeweiligen Devs, da das einzelne runterladen doch sehr nervig ist. Hat jemand eine Idee wie man das realisieren kann über Html? Oder gibt es "einfache" andere Möglichkeiten?

Mfg Bi0

gORDon_vdLg
06.03.2018, 07:07
Falls du diesen Link meinst "https://oxidemod.org/plugins/wipeprotection.2722/download?version=15645" und sich nur die "version" Variable am Ende ändert könnte man z.B. einen Regex benutzen. Es gibt für diverse Scriptsprachen auch Libs die HTML Elemente parsen können, andernfalls String Operationen benutzen um sowas quasi auszuschneiden. Kannst du irgendwelche Scriptsprachen?

Bi0sh0k
06.03.2018, 11:53
Scriptsprachen nicht wirklich. Ich arbeite manchmal mit Configs, ein bisschen Html, Batch aber nichts besonderes. Habe irgendwann aufgehört mit dem ganzen, aber ich will vielleicht wieder einsteigen. Hatte früher mit Vb6 und C# zu tun. Was genau ist ein Regex? Mit der String Variante hatte ich auch schon Überlegungen angestrebt, bloß weiß ich nicht wie ich die Versionsnummer auslesen kann. Welche Scriptform ist denn auf die schnelle die einfachste? Mit welche kann man am besten etwas auslesen in Websites?

gORDon_vdLg
06.03.2018, 13:47
Ich editiere dir nachher mal ein kleines Beispiel hier rein wenn ich zu Hause bin. Mit einem Regex kann man quasi Regeln definieren wie ein String auszusehen hat und nach diesem Muster suchen lassen, damit könnte man diese Aufgabe gut lösen.

Edit: So in der Art kann man das in Python machen. Deinen Cookie musst du einfügen, habe das jetzt nicht mit nem Login probiert da ich keine Lust hatte mich zu registrieren.

import requests
import re

jar = requests.cookies.RequestsCookieJar()
jar.set('logincookie', 'cookiedaten', domain='oxidemod.org', path='/')

r = requests.get('https://oxidemod.org/plugins/wipeprotection.2722/', cookies=jar)

m = re.search('plugins/wipeprotection\.2722/download\?version=[0-9]+', r.text)

r = requests.get('https://oxidemod.org/' + m.group(0), stream=True, cookies=jar)
if r.status_code == 200:
with open('outfile.bin', 'wb') as f:
for chunk in r:
f.write(chunk)

In derm "re.search" Aufruf siehst du den Regex, da steht der zu suchende Text, das Fragezeichen und der Punkt sind escaped. Am Schluss statt der Nummer [0-9]+ wobei [0-9] für "ein Zeichen von 0-9" steht und das + für "eins oder mehr".

Diese Ausdrücke kannst du z.B. auf der Seite https://regex101.com gut testen. Da sieht man dann gleich was erkannt wird.

Mini Rick
06.03.2018, 13:54
Ein Regex ist vereinfacht gesagt ein Suchbegriff, nur kann dieser etwas mehr (klick mich (https://lmddgtfy.net/?q=regex)).
Am einfachsten und schnellsten wäre mMn die Linux Shell:

curl "https://oxidemod.org/plugins/wipeprotection.2722/" | grep -o "plugins/wipeprotection.2722/download?version=[0-9]\{5\}" | sed 's/^/https:\/\/oxidemod.org\//'
Um das automatisch runter zu laden brauchst du einen Login Cookie wenn ich das richtig sehe. Dann solltest du mit einer Zeile fertig sein:
wget --load-cookies=DATEI.txt $(HierHerWasObenSteht)

Wenn du kein Linux hast/willst, müsste es mit jeder anderen Skriptsprache aber auch gehen. Dann halt wahrscheinlich nicht in einer Zeile ^^

Edit:
Der Regex ist hier übrigens das was nach "grep -o" steht.