Matlab - URLREAD2 - Benutzeragent und Cookies

9

Ich habe keine Ahnung, wie ich diesen Beispielcode zum Laufen bringen kann, und ich habe gehofft, dass jemand meine Annahmen überprüfen und bewerten kann, was falsch ist.

Problem : Ich möchte Matlab verwenden, um auf eine Webseite zuzugreifen, die durch einen Anmeldebildschirm geschützt ist. Ich kann wget verwenden und es funktioniert gut, aber wie wir wissen, lädt wget nicht ajax / javascript etc. eingebettet in der Seite. Daher habe ich mich der Verwendung von urlread2 -Funktion aus Matlab File Exchange zugewandt. Im Folgenden basieren alle Beispiele auf dieser Funktion.

Beispiel :

Ich versuche mich auf einer finanziellen Website anzumelden, aber beim Testen mit anderen Websites bekomme ich den gleichen Fehler. Daher werde ich für mein Beispiel fitbit.com verwenden. Um das Verhalten eines Browsers zu simulieren, übergebe ich die folgenden kombinierten Header an urlread2 (Ich habe den Code geteilt, damit ich besser sehen kann, was ich mache):

%Vor%

Wenn die Kopfzeileninformationen definiert sind, erzeuge ich die erforderliche Abfragezeichenfolge (dies ist für die Nachoperation):

%Vor%

Schließlich, bringen Sie alles zusammen für die Funktion urlread2 :

%Vor%

Die folgende Antwort ist in den HTML-Code eingebettet:

%Vor%

Mögliches Problem 1 :

Es kann gut sein, dass ich den Header falsch übergebe, aber wenn ich die Header über FireFox nachgebilde, funktioniert die Seite korrekt. Jeder diesbezügliche Rat wird sehr geschätzt.

Mögliches Problem 2 :

Ich denke, dass das Problem auf Cookies zurückzuführen ist, wobei die urlread2 (oder irgendeine andere Funktion in Matlab) Cookies unterstützt. Wenn dies der Fall ist, hat jemand irgendwelche Vorschläge, wie man das angehen kann?

    
Dan 16.01.2016, 12:18
quelle

1 Antwort

1

Das Problem ist nicht Ihr Benutzeragent. Ich konnte das überprüfen, indem ich eine Handvoll User Agent-Werte ausprobierte, die funktionieren sollten. Stattdessen ist das Problem das, was Sie als Problem 2 beschrieben haben. Mit anderen Worten, CloudFlare erfordert, dass Ihr HTTP-Header ein gültiges Cookie-Wert / Name-Paar enthält.

Dies ist die Zeile der urlread2-Ausgabe, die mir sagt, dass das der Fall ist:

<div class="cf-alert cf-alert-error cf-cookie-error" id="cookie-alert" data- translate="enable_cookies">Please enable cookies.</div>

Um zu sehen, welche Cookies von fitbit.com verwendet werden, fügen Sie das Add-Cookies-Add-on zu Firefox hinzu. Nach meiner Zählung werden auf der Anmeldeseite 36 Cookies gesetzt, und ich vermute, dass Ihnen die Einreise verweigert wird, wenn Sie zumindest einige davon vermissen. Eine Sache, die Sie tun können, ist einfach die Cookie-Werte von Ihrem Browser zu nehmen und sie manuell zu Ihrem HTTP-Header mit einem Name / Wert-Paar hinzuzufügen, aber es wäre besser, die Cookies in einem PHP-Skript setzen zu lassen. Hier ist ein Stack-Overflow-Beitrag, der beschreibt, wie das funktionieren würde: Wie kann ich Website-Inhalte in PHP von einer Website abkratzen, die eine Cookie-Anmeldung erfordert? Nicht einfach, aber definitiv nicht unmöglich. Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

    
dgoverde 16.02.2016 21:59
quelle

Tags und Links