Webseite (hier gehostet) mit php auslesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
agent
angeben
art
beste methode
betrachten
binden
code
empfehlen
funktion
information
option
paar
pfad
schnittstelle
server
stellen
url
verwaltung
windows
zertifikat
-
Hi,
ich möchte eine Webseite die hier gehostet ist und mit einem Let's Encrypt SSL Zertifikat versehen ist von einem anderen Server aus einlesen (API).
Mit file_get_contents bekomme ich die Fehlermeldung 403 forbidden.
Mit curl und angehängtem SSL Zertifikat sehe ich garnichts und lasse ich das Zertifikat weg, sehe ich die Lima 403 Seite mit dem Hinweis, dass mein Verhalten illegale Aktivitäten aufweist :(
Ich gehe also davon aus, dass das Problem nicht im Code, sondern an Sicherheitsvorkehrungen seitens Lima liegt.
Meine Frage, wie kann ich meine API realisieren und den Lima Server von meinem nicht illegalen Verhalten überzeugen?
Macht es einen Unterschied ob ein Basic oder Premium Account verwendet wird?
Viele Grüße & Dankeschön :)
Ps. Zur Vollständigkeit mal noch den Code
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://....'); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/api/mycert.crt"); $jsonstr = curl_exec($ch); curl_close($ch); $data = json_decode($jsonstr);
Beitrag zuletzt geändert: 13.9.2016 21:15:16 von programtools -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Da du ja die Seite auf Lima, welche ein SSL Cert hat, betrachten möchtest, musst du nicht das Let's Encrypt Zertifikat an CURL geben, sondern CURL muss das Zertifikat, das du von Lima erhälst, anhand von CA Root Certificates überprüfen. Verwende somit z.B. anstatt mycert.crt dies hier.
Übrigens beim Arbeiten mit CURL is die curl_error Funktion sehr nützlich.
Falls dir eine unsichere Verbindung egal ist kannst auch die beiden SSL_VERIFY* Optionen deaktivieren.
Falls Lima sicher immer noch beklangt, dann gibt es vielleicht ein User Agent Checker welcher dein CURL User Agent nicht mag. Weiss nicht ob das erlaubt ist, aber den String kann man theoretisch auch anpassen. -
Danke für deine Anmerkung,
klasset schrieb:
Da du ja die Seite auf Lima, welche ein SSL Cert hat, betrachten möchtest, musst du nicht das Let's Encrypt Zertifikat an CURL geben, sondern CURL muss das Zertifikat, das du von Lima erhälst, anhand von CA Root Certificates überprüfen. Verwende somit z.B. anstatt mycert.crt dies hier.
ich habe mich auf dieses Tutorial verlassen: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
Demnach muss ich das Zertifikat, was mein Browser hat an curl (mycert.crt) binden - oder?
Mit der curl_error Funktion (super Tipp!) konnte ich folgenden Fehler erhalten:
error setting certificate verify locations: CAfile: ...../api/mycert.crt CApath: none
Der Pfad ist richtig, ob CApath: none richtig ist weiß ich nicht.
Auf SSL möchte ich nicht verzichten, den UserAgent zu manipulieren funktioniert:
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
Allerdings nur, solange ich das Zertifikat nicht überprüfe.
Ausserdem finde ich diese Option recht unschön, gibt es noch weitere Möglichkeiten, auf Webseiteninhalte von Lime zuzugreifen? Ich bin ja bestimmt nicht der einzige, der eine Schnittstelle von Außen benötigt :D?
Viele Grüße
Beitrag zuletzt geändert: 13.9.2016 21:15:03 von programtools -
programtools schrieb:
Demnach muss ich das Zertifikat, was mein Browser hat an curl (mycert.crt) binden - oder?
Evtl. funktioniert dies auch, da CURL dann die richtigen CA hat und dem Zertifikat dann Trusted. Ich persönlich würde jedoch trotzdem empfehlen das andere File zu verwenden (hab das an mehreren Stellen im Internet erwähnt gefunden).
CURLOPT_CAINFO verlangt einen absoluten Pfad, du musst also sicher stellen, dass deine Pfadangaben korrekt sind.
programtools schrieb:
Ausserdem finde ich diese Option recht unschön, gibt es noch weitere Möglichkeiten, auf Webseiteninhalte von Lime zuzugreifen? Ich bin ja bestimmt nicht der einzige, der eine Schnittstelle von Außen benötigt :D?
Also CURL ist schon die beste Methode. -
klasset schrieb:
Ich persönlich würde jedoch trotzdem empfehlen das andere File zu verwenden (hab das an mehreren Stellen im Internet erwähnt gefunden).
Was ist das denn für eine Datei?
klasset schrieb:
CURLOPT_CAINFO verlangt einen absoluten Pfad, du musst also sicher stellen, dass deine Pfadangaben korrekt sind.
Der Pfad ist absolut, getcwd() holt mir den gesammten Pfad in mein Projekt, ab dort navigiere ich ja dann in den api Ordner wo das Zertifikat liegt.
klasset schrieb:
Also CURL ist schon die beste Methode.
Ich meinte nicht curl, sondern den UserAgent. Die Informationen sind ja offensichtlich falsch.
Kann ich eine Art eigenen UserAgent angeben bzw gibt es einen UserAgent der einen Server beschreibt, welcher eine API abfragt?
Viele Grüße -
programtools schrieb:
Ich meinte nicht curl, sondern den UserAgent. Die Informationen sind ja offensichtlich falsch.
Kann ich eine Art eigenen UserAgent angeben bzw gibt es einen UserAgent der einen Server beschreibt, welcher eine API abfragt?
Ich habe vor einiger Zeit mal ein paar Klassen geschrieben um die Verwaltung via PHP zu nutzen. Da habe ich den UA "Lulu's Testclient" oder so verwendet.
Wichtig ist wohl nur das einer da ist. -
muellerlukas schrieb:
Ich habe vor einiger Zeit mal ein paar Klassen geschrieben um die Verwaltung via PHP zu nutzen. Da habe ich den UA "Lulu's Testclient" oder so verwendet.
Wichtig ist wohl nur das einer da ist.
Klingt interessant, hast du ein paar mehr Infos?
Vielen Dank & Grüße
Beitrag zuletzt geändert: 13.9.2016 22:33:29 von programtools -
Klaro, meld dich einfach per PM oder halt im Chat. Heute wirds allerdings nix mehr, der Source dafür ist noch aufm alten Laptop.
Wird dir aber beim Let's Encrypt-Zertifikat auch nix bringen, für die Verwaltung ist ein StartCom-Zertifikat genutzt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage