google-api auf - Welche Alternativen gibt es jetzt, seit die Google-Such-API nicht mehr unterstützt wird?




geht werden. (9)

Die Google Web Search-API wurde eingestellt und durch die benutzerdefinierte Such-API ersetzt (siehe http://code.google.com/apis/websearch/ ).

Ich wollte das gesamte Web durchsuchen, aber es sieht so aus, als ob mit der neuen API nur benutzerdefinierte Websites durchsucht werden können.

Gibt es eine Möglichkeit, das gesamte Web programmatisch zu durchsuchen? Ich konnte die alte API mit JSON aus einem Java-Programm abfragen.


Answers

Ich habe das gerade von Common Crawl erfahren.

http://www.commoncrawl.org/

Könnte die Antwort sein, die wir alle suchen!



Es gibt einen Hinweis auf die docs :

Hinweis: Die Google Web Search-API wurde ab dem 1. November 2010 offiziell eingestellt. Sie funktioniert weiterhin gemäß unserer Richtlinie zur Vernachlässigung , aber die Anzahl der Anforderungen, die Sie pro Tag stellen können, ist begrenzt. Daher empfehlen wir Ihnen, zu der neuen benutzerdefinierten Such-API zu wechseln.

Die Richtlinie "Vernachlässigung" gibt an, dass sie die API weiterhin drei Jahre lang ausführen wird. Wenn Sie also bereits eine Anwendung haben, die die alte API verwendet, müssen Sie sich noch nicht beeilen, um die Dinge noch zu ändern. Wenn Sie eine neue Anwendung schreiben, verwenden Sie die API für benutzerdefinierte Suche . Siehe meine Antwort here wie man das in Python macht, aber die Idee ist für jede Sprache die gleiche.


Ja, die benutzerdefinierte Suche von Google hat jetzt die alte Such-API ersetzt, Sie können jedoch weiterhin die benutzerdefinierte Suche von Google verwenden, um das gesamte Web zu durchsuchen. Die Schritte sind jedoch aus der Konfiguration der benutzerdefinierten Suche nicht ersichtlich.

So erstellen Sie eine benutzerdefinierte Google-Suchmaschine, die das gesamte Web durchsucht:

  1. Klicken Sie auf der Startseite von Google Custom Search ( http://www.google.com/cse/ ) auf "Eine benutzerdefinierte Suchmaschine erstellen".
  2. Geben Sie einen Namen und eine Beschreibung für Ihre Suchmaschine ein.
  3. Geben Sie unter Suchmaschine definieren im Feld Zu durchsuchende Websites mindestens eine gültige URL ein (setzen Sie zunächst www.anyurl.com ein, um an diesem Bildschirm vorbeizukommen. Mehr dazu später).
  4. Wählen Sie die gewünschte CSE-Edition aus und akzeptieren Sie die Nutzungsbedingungen, und klicken Sie dann auf Weiter. Wählen Sie die gewünschte Layoutoption und klicken Sie dann auf Weiter.
  5. Klicken Sie auf einen der Links im Abschnitt "Nächste Schritte", um zu Ihrem Steuerungsfeld zu navigieren.
  6. Klicken Sie im linken Menü unter Systemsteuerung auf Grundlagen.
  7. Wählen Sie im Bereich "Sucheinstellungen" die Option "Das gesamte Web durchsuchen" aus, heben Sie jedoch die enthaltenen Websites hervor.
  8. Klicken Sie auf Änderungen speichern.
  9. Klicken Sie im linken Menü unter Systemsteuerung auf Sites.
  10. Löschen Sie die Website, die Sie während des ersten Einrichtungsvorgangs eingegeben haben.

Jetzt sucht Ihre benutzerdefinierte Suchmaschine das gesamte Web.

Preisgestaltung

  • Mit der benutzerdefinierten Suche von Google erhalten Sie 100 Suchanfragen pro Tag kostenlos.
  • Danach zahlen Sie $ 5 pro 1000 Abfragen.
  • Es gibt maximal 10.000 Abfragen pro Tag.

Quelle: https://developers.google.com/custom-search/json-api/v1/overview#Pricing

  • Die Suchqualität ist viel niedriger als die normale Google-Suche (keine Synonyme, "Intelligenz" etc.)
  • Es sieht so aus, als plane Google sogar, diesen Dienst komplett herunterzufahren.


Sie könnten sie einfach durchschicken, wie es ein Browser tut, und dann den HTML-Code parsen, was ich immer getan habe, sogar für Dinge wie Youtube.


Hier ist eine Option unten in der Systemsteuerung für die benutzerdefinierte Suche: "Zu durchsuchende Websites" , Sie können wählen " Durchsuchen Sie das gesamte Web, aber betonen Sie die enthaltenen Websites"


Sie können die benutzerdefinierte Suchmaschine "Everywhere" direkt auf der Startseite von Google Custom Search ( http://www.google.com/cse/ ) erstellen. Sie sollten nur auf "Erweitert" klicken, während Sie eine neue Engine hinzufügen. Dort können Sie den Site-Typ Schema.org angeben. " Thing " ist der allgemeinste Typ, der das gesamte Web abdeckt.


Ein paar Szenarien könnten helfen, den Zweck von Zugriffs- und Aktualisierungstoken und die technischen Kompromisse bei der Entwicklung eines oauth2-Systems (oder eines anderen auth-Systems) zu veranschaulichen:

Web-App-Szenario

Im Web-App-Szenario haben Sie mehrere Möglichkeiten:

  1. Wenn Sie über eine eigene Sitzungsverwaltung verfügen, speichern Sie sowohl access_token als auch refresh_token im Sitzungsstatus Ihres Sitzungsstatusdiensts mit Ihrer Sitzungs-ID ab. Wenn eine Seite vom Benutzer angefordert wird, die Sie auf die Ressource zugreifen müssen, verwenden Sie das access_token und wenn das access_token abgelaufen ist, verwenden Sie das refresh_token, um das neue zu erhalten.

Stellen wir uns vor, jemand schafft es, Ihre Sitzung zu entführen. Das einzige, was möglich ist, ist Ihre Seiten anzufordern.

  1. Wenn Sie keine Sitzungsverwaltung haben, setzen Sie das access_token in ein Cookie und verwenden Sie es als Sitzung. Wenn der Benutzer dann Seiten von Ihrem Webserver anfordert, senden Sie das access_token. Ihr App-Server könnte das access_token bei Bedarf aktualisieren.

Vergleiche 1 und 2:

In 1 reisen access_token und refresh_token nur auf dem Weg zwischen dem Autorisierungsserver (Google in Ihrem Fall) und Ihrem App-Server. Dies würde auf einem sicheren Kanal erfolgen. Ein Hacker könnte die Sitzung übernehmen, aber nur mit Ihrer Web-App interagieren. In 2 könnte der Hacker das access_token entfernen und eigene Anfragen an die Ressourcen richten, auf die der Benutzer Zugriff gewährt hat. Selbst wenn der Hacker Zugriff auf das access_token erhält, hat er nur ein kurzes Fenster, in dem er auf die Ressourcen zugreifen kann.

In beiden Fällen sind refresh_token und clientid / secret nur dem Server bekannt, so dass es vom Webbrowser aus unmöglich ist, einen langfristigen Zugriff zu erhalten.

Stellen wir uns vor, Sie implementieren oauth2 und setzen eine lange Zeitüberschreitung für das Zugriffstoken:

In 1) Es gibt hier keinen großen Unterschied zwischen einem kurzen und einem langen Zugriffs-Token, da es im App-Server versteckt ist. In 2) könnte jemand das access_token im Browser bekommen und es dann verwenden, um für eine lange Zeit direkt auf die Ressourcen des Benutzers zuzugreifen.

Mobiles Szenario

Auf dem Handy gibt es ein paar Szenarien, die ich kenne:

  1. Speichern Sie clientid / secret auf dem Gerät, und lassen Sie das Gerät den Zugriff auf die Ressourcen des Benutzers orchestrieren.

  2. Verwenden Sie einen Back-End-Anwendungsserver, um die Client-ID / den geheimen Schlüssel zu speichern, und führen Sie die Orchestrierung durch. Verwenden Sie das access_token als eine Art Sitzungsschlüssel und übergeben Sie es zwischen dem Client und dem Anwendungsserver.

Vergleiche 1 und 2

In 1) Sobald Sie clientid / secret auf dem Gerät haben, sind sie nicht mehr geheim. Jeder kann dekompilieren und dann so tun, als ob Sie es wären, mit der Erlaubnis des Benutzers natürlich. Das access_token und das refresh_token befinden sich ebenfalls im Speicher und können auf einem kompromittierten Gerät aufgerufen werden, was bedeutet, dass jemand als Ihre App fungieren kann, ohne dass der Benutzer seine Zugangsdaten angibt. In diesem Szenario spielt die Länge des access_token für die Hackbarkeit keine Rolle, da refrese_token sich an der gleichen Stelle wie access_token befindet. In 2) sind die clientid / secret und das Refresh-Token kompromittiert. Hier bestimmt die Länge des access_token-Ablaufs, wie lange ein Hacker auf die Ressourcen des Benutzers zugreifen könnte, wenn er sie ergreift.

Ablauflängen

Hier kommt es darauf an, was Sie mit Ihrem Authentifizierungssystem sichern, wie lange Ihr access_token Ablaufdatum sein sollte. Wenn es für den Benutzer besonders wertvoll ist, sollte es kurz sein. Etwas weniger Wertvolles kann länger sein.

Manche Leute wie Google verfallen das refresh_token nicht. Manche mögen Stackflow. Die Entscheidung über den Ablauf ist ein Kompromiss zwischen Benutzerfreundlichkeit und Sicherheit. Die Länge des Aktualisierungstokens bezieht sich auf die Benutzerrückgabedauer, dh Sie legen die Aktualisierung so fest, wie oft der Benutzer zu Ihrer App zurückkehrt. Wenn das Aktualisierungstoken nicht abläuft, wird es nur mit einem expliziten Widerruf widerrufen. Normalerweise würde eine Anmeldung nicht widerrufen.

Hoffe, dass eher längere Post sinnvoll ist.





google-api deprecated google-search google-custom-search