ich arbeite seit einiger Zeit mit einem eigenen RSS-Reader auf Serverbasis (Abrufe per Curl), um RSS-Feeds eines namhaften IT-Verlages zu verarbeiten.
Seit einigen Tagen/Wochen ist dies von meinem Strato-Webhosting nicht mehr möglich.
Ich erhalte einen Fehler:
„OpenSSL SSL_connect: Connection reset by peer in connection to …:443“
Von meiner lokalen Testumgebung lässt sich weiterhin wunderbar darauf zugreifen.
Ich vermute, dass Strato neuerdings geblockt wird. Eine Anfrage beim Verlag wurde noch nicht beantwortet. Gibt es Möglichkeiten so etwas (z. B.) durch öffentliche Proxys zu umgehen?
Das lässt sich schlecht beantworten, weil ich den so neu erstellten Feed über PodcastAddict habe abrufen lassen. Wie oft dieser Dienst wiederum abruft, kann ich nicht beantworten. Ich kann mir nicht vorstellen, dass dort übermäßig viel abgerufen wird, sondern eher gecached wird, um zu viele Abfragen zu vermeiden.
Naja, dann solltest du das aber mal in Erfahrung bringen…
Dass Strato allgemein geblockt wird, kann ich mir kaum vorstellen.
Aber die Anbieter sind recht gut darin, häufige und umfassende Abrufe von ein und der gleichen IP zu erkennen und zu blocken.
Daneben gucken viele Server auch auf die Header - wenn curl o.ä. keinen Header, der wie der eines Browsers aussieht, schickt, dann gibt’s keine Antwort.
Dass du keine Antwort vom Verlag bekommen hast, ist irgendwo verständlich - eigentlich möchten die nicht, dass du einfach ihre Inhalte abgrast.
inzwischen hatte ich Antwort vom RSS-Feed-Anbieter erhalten. Man hat mir mitgeteilt, dass noch weitere Anwender, die Strato nutzen, die gleichen Probleme haben. Man habe es dann mit einem eigenen Strato-Test-Account versucht, nachzustellen aber keine Probleme reproduzieren können.
Das war es dann mit der Unterstützung
Ich hab noch mal nachgeforscht und festgestellt, dass mein lokaler Webserver die cURL-Anfragen per IPv4 rausschickt und Antworten erhält.
Der Strato-Server schickt die Anfragen per IPv6 raus. Damit kommt die Gegenstelle wohl nicht klar.
Konnte nun per PHP diesen funktionierenden Workaround einbauen:
if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}