DE202021103600U1 - Dynamische Optimierung von Anfrageparametern für Proxy-Server - Google Patents
Dynamische Optimierung von Anfrageparametern für Proxy-Server Download PDFInfo
- Publication number
- DE202021103600U1 DE202021103600U1 DE202021103600.1U DE202021103600U DE202021103600U1 DE 202021103600 U1 DE202021103600 U1 DE 202021103600U1 DE 202021103600 U DE202021103600 U DE 202021103600U DE 202021103600 U1 DE202021103600 U1 DE 202021103600U1
- Authority
- DE
- Germany
- Prior art keywords
- scraping
- request
- proxy
- parameters
- strategy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000005457 optimization Methods 0.000 title description 5
- 238000007790 scraping Methods 0.000 claims abstract description 166
- 230000004044 response Effects 0.000 claims abstract description 77
- 238000012545 processing Methods 0.000 claims description 15
- 230000015654 memory Effects 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 claims description 3
- 238000012552 review Methods 0.000 claims description 2
- 241000856733 Chimerathyas cooki Species 0.000 claims 3
- 238000000034 method Methods 0.000 description 46
- 235000014510 cooky Nutrition 0.000 description 32
- 230000008569 process Effects 0.000 description 12
- 230000009193 crawling Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 4
- 241001101988 Proxys Species 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000002716 delivery method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000239290 Araneae Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
System zum Extrahieren und Sammeln von Daten von einem Webserver, umfassend
einen Anfrageoptimierer (104), der konfiguriert ist zum
Vergleichen von Parametern einer von einem Benutzergerät (102) empfangenen Anfrage mit einer Liste von Scraping-Strategien;
Auswählen einer Scraping-Strategie aus der Liste von Scraping-Strategien, die zu den Parametern der Anfrage korrespondiert
Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie;
Anpassen der Parameter der Anfrage entsprechend der Scraping-Strategie zum Bilden einer angepasste Anfrage;
Senden der angepassten Anfrage an ein Ziel (116, 118) durch einen Proxy (108, 110), der entsprechend der Scraping-Strategie ausgewählt wurde;
Empfangen einer Antwort von dem Ziel (116, 118).
einen Anfrageoptimierer (104), der konfiguriert ist zum
Vergleichen von Parametern einer von einem Benutzergerät (102) empfangenen Anfrage mit einer Liste von Scraping-Strategien;
Auswählen einer Scraping-Strategie aus der Liste von Scraping-Strategien, die zu den Parametern der Anfrage korrespondiert
Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie;
Anpassen der Parameter der Anfrage entsprechend der Scraping-Strategie zum Bilden einer angepasste Anfrage;
Senden der angepassten Anfrage an ein Ziel (116, 118) durch einen Proxy (108, 110), der entsprechend der Scraping-Strategie ausgewählt wurde;
Empfangen einer Antwort von dem Ziel (116, 118).
Description
- FELD
- In einem Aspekt beziehen sich die hierin beschriebenen Ausführungsformen auf den Datenabruf aus dem Web, um die Kommunikation zwischen einem Benutzer und Technologie zu verbessern, die für den Zugriff auf öffentlich verfügbare Internetressourcen benutzt wird. Die hierin beschriebenen Ausführungsformen verwenden Technologien zur Datenerfassung, um große Datenmengen aus öffentlichen Webressourcen effizienter zu erfassen.
- HINTERGRUND
- Proxy-Server sind Zwischenserver, die Anfragen von Clients annehmen und die Anfragen an andere Proxyserver oder einen Quellserver weiterleiten oder die Anfrage aus ihrem eigenen Cache bedienen. Proxy-Server sind an ein Netzwerk angeschlossene Computergeräte, die als Vermittler für Kunden-Computergeräte dienen, die Dienste oder Daten von „Netzwerkressourcen“ anfordern, die Anfrage von Kunden-Proxy-Servern annehmen und entweder die Anfrage an einen anderen Proxy weiterleiten, zur angeforderten Ressource umleiten oder die Anfrage aus ihrem eigenen Cache bedienen, der sich lokal oder entfernt befindet oder über mehrere Systeme verteilt ist.
- Der Proxy wird auch als „Server“ oder „Gateway“ bezeichnet. Ein Proxy ermöglicht es Benutzern in einem Netzwerk, im Web zu surfen, Dateien über das File Transfer Protocol (FTP) zu senden und mit E-Mail und anderen Internetdiensten zu arbeiten. In einem Aspekt arbeitet ein Proxy auf folgende Weise: i) er empfängt eine Anfrage von einem Benutzer in einem öffentlichen Netzwerk oder einem privaten Netzwerk, das durch eine Firewall getrennt ist, an einen entfernten Server, der den gewünschten Inhalt enthält; ii) er erstellt einen Proxy-Tunnel in Richtung des entfernten Servers; iii) er leitet die Anfrage an den entfernten Server durch den eingerichteten Tunnel weiter; iv) er empfängt die Antwort vom entfernten Server; und v) er leitet die Antwort zurück an den Benutzer.
- Die Proxys können in verschiedene Typen unterteilt werden, je nachdem, welche Funktionen bereitgestellt werden oder welche Server verwendet werden. Die Proxys können auch in Residential-Internetprotokoll(IP)-Proxys, Rechenzentrums-IP-Proxys und Mobile-IP-Proxys unterteilt werden. Ein Residential-IP-Proxy ist eine IP-Adresse, die mit einem physischen Gerät verbunden ist, z. B. einem Mobiltelefon oder einem Desktop-Computer. Die eigentlichen Eigentümer der Residential-IP-Proxys, nämlich Internet-Dienstanbieter (ISPs), registrieren Residential-IP-Adressen in öffentlichen Datenbanken, wodurch Webseiten den Internetanbieter, das Netzwerk und den Standort eines Geräts ermitteln können. Der Rechenzentrums-IP-Proxy ist der Proxy-Server, dem eine Rechenzentrums-IP zugewiesen ist. Rechenzentrums-IPs sind IPs, die Unternehmen und nicht Privatpersonen gehören. Die Rechenzentrums-Proxys sind eigentlich IP-Adressen, die sich nicht in einem Haushalt befinden. Stattdessen sind die Rechenzentrums-Proxys mit einem kommerziellen Rechenzentrum verbunden. Mobile-IP-Proxys verhalten sich ähnlich wie Proxys für Privathaushalte, da sie ihre IP-Adresse von einem Mobilfunkbetreiber aus einem Pool von IP-Adressen zugewiesen bekommen, die für mobile Clients bestimmt sind. Mobile-IP-Proxys verwenden mobile Daten, im Gegensatz zu einem privaten Proxy, der eine Breitband-ISP-Verbindung nutzt.
- Ein Proxyserver ist im Grunde ein Computer im Internet mit einer eigenen IP-Adresse, die der Computer des Clients „kennt“. Wenn ein Client eine Web-Anfrage sendet, wird die Anfrage zuerst an den Proxy-Server gesendet. Der Proxy-Server stellt dann die Web-Anfrage im Namen des Clients, sammelt die Antwort vom Webserver und leitet die Daten der Webseite weiter, so dass der Client die Seite im Browser oder auf andere Weise sehen kann, z. B. als Daten, die in eine Datei auf der Festplatte geschrieben werden, um sie von Datenaggregations- und Analysetools zu verarbeiten. Wenn der Proxy-Server die Web-Anfragen weiterleitet, kann er Änderungen an den Daten vornehmen und dennoch die angeforderten Daten bereitstellen. Zum Beispiel kann ein Proxy-Server die IP-Adresse des Clients ändern, so dass der Webserver den geografischen Standort des Clients nicht erfährt. Außerdem kann ein Proxy-Server den Zugriff auf bestimmte Webseiten blockieren, basierend auf der IP-Adresse oder dem Domänennamen.
- Moderne Proxyserver leisten viel mehr als nur die Weiterleitung von Webanfragen. So können moderne Proxyserver mehrere zusätzliche Funktionen ausführen, um die Datensicherheit und die Netzwerkleistung zu erhöhen. Proxy-Server können als Firewall und Webfilter fungieren, gemeinsam genutzte Netzwerkverbindungen bereitstellen und Daten im Cache speichern, um häufige Anfragen zu beschleunigen. Proxy-Server können ein hohes Maß an Datenschutz bieten. Proxy-Server können die IP-Adresse und andere identifizierende Informationen, die die Web-Anfrage enthält, ändern (z. B. sodass der Zielserver nicht weiß, wer die ursprüngliche Anfrage gestellt hat). Proxy-Server können auch verwendet werden, um die Internetnutzung von Mitarbeitern und Kindern zu kontrollieren (z. B. richten Unternehmen und Eltern Proxy-Server ein, um zu kontrollieren und zu überwachen, wie ihre Mitarbeiter oder Kinder das Internet nutzen) oder um die Browsing-Geschwindigkeit zu verbessern und Bandbreite zu sparen (z. B. können Proxy-Server beliebte Websites in einen Cache stellen, d.h. eine Kopie der entsprechenden Website-Daten lokal speichern, bei einer Anfrage die gespeicherte Kopie an den Client senden).
- Proxys können verwendet werden, um bestimmte Internetbeschränkungen (z. B. Firewalls) zu umgehen, indem ein Benutzer den Inhalt über einen (entfernten) Proxy-Server anfordert, anstatt direkt auf den Inhalt zuzugreifen. Proxy-Server werden häufig verwendet, um geo-IP-basierte Inhaltsbeschränkungen zu umgehen. Wenn jemand Inhalte z. B. von einer US-amerikanischen Webseite abrufen möchte, aber von seinem Heimatland aus keinen Zugang hat, kann er die Anfrage über einen Proxyserver stellen, der sich in den USA befindet (und eine US-IP-Adresse hat). Durch die Verwendung von Proxy-Diensten scheint der Datenverkehr des Benutzers von der US-amerikanischen IP-Adresse zu kommen. Proxys können auch für Web Scraping, Data Mining und ähnliche Aufgaben verwendet werden.
- Das Sammeln von Daten aus dem Web ist eine wichtige und oft lebenswichtige Aufgabe für viele Geschäftsbereiche. Die Bedeutung und der Wert von Daten nimmt ständig zu und daher wächst der Bedarf an effizienteren Werkzeugen zur Datenabfrage und -analyse. Die beiden wichtigsten Werkzeuge für den Zugriff auf Datenquellen im Web sind Web-Crawling und Web-Scraping.
- Der allgemeine Zweck des Web-Crawling besteht darin, auf öffentlich verfügbare Web-Ressourcen (in der Regel Webseiten) zuzugreifen, deren Inhalt abzurufen und den Inhalt an den Benutzer weiterzuleiten. Der grundlegende Zweck des Web-Scraping besteht darin, die vom Web-Crawler abgerufenen Daten zu analysieren und die vom Benutzer angeforderten Informationen zu extrahieren.
- Ein Web-Crawler (auch Web-Spider oder Bot genannt) ist ein Programm oder automatisiertes Skript, das methodisch und automatisiert im Web navigiert. Seine primäre Aufgabe ist es, die vom Benutzer bestellten Informationen zu sammeln. Der Web-Crawler tut dies, indem er das Web nach den angeforderten Informationen durchsucht und den rohen Hypertext Markup Language (HTML)-Code der aufgerufenen Websites abruft. Ein weiterer Zweck des Web-Crawling ist die Indizierung von Web-Inhalten durch Suchmaschinen.
- Web-Scraping (auch Web-Harvesting, Web-Datenextraktion genannt) ist ein Prozess, bei dem die aufgerufenen Webseiten abgerufen und der Inhalt hinsichtlich der angeforderten Daten analysiert wird. Web-Scraping kann manuell von Hand durchgeführt werden, besteht aber typischerweise aus automatisierten Prozessen, die durch einen Web-Crawler implementiert werden.
- Web-Crawling und Web-Scraping-Tools werden oft zusammen verwendet, da die Scraping-Funktionalität stark von den Ergebnissen des Web-Crawlings abhängt. Genauer gesagt ist das Web-Crawling eine Hauptkomponente des Web-Scraping. Daten, auf die ein Web-Crawler zugreift und die er abruft, werden dann von einem Web-Scraper verarbeitet, der die abgerufenen Inhalte analysiert und die benötigten Daten extrahiert.
- Der Betrieb eines Web-Crawlers durchläuft eine Abfolge von Aufgaben, einschließlich der Entgegennahme der Anfrage, des Sammelns von Daten und des Lieferns von Daten. Genauer gesagt umfassen die Aufgaben eines Web-Crawlers: Annahme der Anfrage vom Benutzer; Verwaltung der Anfragewarteschlange; Lastverteilung zwischen Verarbeitungsdiensten; Versuch, die angeforderten Daten abzurufen; Datenspeicherung; und Datenlieferung. Die Aufgabe des Versuchs des Datenabrufs umfasst außerdem die Verwaltung von Anfragen in den Protokollen Hypertext Transfer Protocol (HTTP) und Hypertext Transfer Protocol Secure (HTTPS), rotierenden Proxys und Headern.
- Ein Web-Crawler verwendet ein standardmäßiges HTTP/HTTPS-Anfrage-/Antwort-Modell, um Ziele aufzurufen und darauf zuzugreifen. Dieses Modell beschreibt die Client-Server-Kommunikation über das Web. Ein Client sendet eine HTTP-Anfrage an den Server und bittet um Zugriff auf bestimmte Daten. Ein Server sendet eine HTTP-Antwort mit den angeforderten Daten an den Client zurück. Die HTTP-Anfrage gibt den Uniform Resource Locator (URL) des Ziels, die Zugriffsmethode und die Header an. Die HTTP-Antwort gibt Statusinformationen, die Header und die angeforderten Daten zurück.
- HTTP-Header ermöglichen es dem Client und dem Server, zusätzliche Informationen mit einer HTTP-Anfrage oder -Antwort zu übergeben. Kopfzeilen können nach ihren Kontexten gruppiert werden.
- Allgemeine Header gelten sowohl für Anfragen als auch für Antworten, jedoch ohne Bezug zu den im Hauptteil übertragenen Daten. Anfrage-Header enthalten weitere Informationen über die abzurufende Ressource bzw. über den Client, der die Ressource anfordert. Response-Header enthalten zusätzliche Informationen über die Antwort, z. B. die URL der Quellwebseite oder den Server, der die Antwort liefert. Entity-Header enthalten Informationen über den Hauptteil der abgeholten Webseite, z. B. die Länge des Inhalts oder die Art des Inhalts.
- Header können auch danach gruppiert werden, wie Proxys sie behandeln, z. B. Connection, Keep-Alive, Proxy-Authenticate, Proxy-Authorization und andere.
- End-to-End-Header: Diese Header müssen an den finalen Empfänger der Nachricht übertragen werden: den Server für eine Anfrage oder den Client für eine Antwort. Zwischengeschaltete Proxys müssen diese Header unverändert weitersenden und Caches müssen sie speichern.
- Hop-by-Hop-Header: Diese Header sind nur für eine einzige Verbindung auf Transport-ebene sinnvoll und dürfen nicht von Proxys darüber hinaus erneut übertragen oder zwischengespeichert werden. Es ist zu beachten, dass nur Hop-by-Hop-Header über den Connection-General-Header gesetzt werden dürfen. Ein wesentliches Detail der Funktionalität, die Hop-by-Hop-Header verwendet, ist die Tatsache, dass solche Hea-der ausschließlich zwischen dem Gerät, von dem die Anfrage ausgeht, und dem Proxy übertragen werden, während der primäre Zweck solcher Header darin besteht, die Verwaltung der entsprechenden Proxy-Sitzung zu unterstützen.
- Ein HTTP-Cookie (Web-Cookie, Browser-Cookie) ist ein kleines Datenelement, das ein Server an den Webbrowser des Benutzers sendet. Der Browser kann das Cookie speichern und es bei späteren Anfragen an denselben Server zurücksenden. Typischerweise wird das Cookie verwendet, um zu erkennen, ob zwei Anfragen vom selben Browser kamen - zum Beispiel, um einen Benutzer angemeldet zu halten. Das Cookie merkt sich zustandsbezogene Informationen für das zustandslose HTTP-Protokoll.
- Cookies werden hauptsächlich für drei Zwecke verwendet: 1) Sitzungsmanagement (Logins, Warenkörbe, Spielstände oder alles andere, was der Server sich merken soll); 2) Personalisierung (Benutzerpräferenzen, Benutzeroberflächen und andere Einstellungen); 3) Nachverfolgung (Aufzeichnung und Analyse des Benutzerverhaltens).
- Der Cookie-Header der HTTP-Anfrage enthält gespeicherte HTTP-Cookies, die zuvor vom Server mit dem Set-Cookie-Header gesendet wurden. Der Cookie-Header ist optional und kann weggelassen werden, wenn z. B. die Datenschutzeinstellungen des Browsers Cookies blockieren.
- Die GET-Methode wird verwendet, um Informationen vom Ziel abzurufen. Bei Einhaltung der REST-API-Richtlinien werden bei Anfragen mit der GET-Methode nur die Quelldaten abgerufen, aber nicht verändert oder anderweitig beeinflusst. Die POST-Methode wird verwendet, um Daten an die angegebene Ressource zu übermitteln. Anfragen, die die POST-Methode verwenden, erstellen die Quelldaten oder, wenn die REST-Richtlinien nicht strikt befolgt werden, aktualisieren die Quelldaten.
- Die POST-Methode ermöglicht es dem Benutzer, Daten an das Webziel zu senden und zu übermitteln. Diese Daten werden in einen HTTP-Nachrichtentext aufgenommen, der von einer HTTP-Anfrage übertragen wird. Diese Daten müssen codiert werden, bevor sie durch die Betriebsschritte des Systems gesendet werden. Die Daten werden aus Gründen der Datensicherheit codiert. Die Daten werden codiert, bevor die HTTP-Anfrage an den Proxy-Server gesendet wird.
- Das Protokoll, das zur Übertragung von Informationen über Verbindungen zwischen Proxys verwendet wird, wird als Proxy-Protokoll bezeichnet. Das Proxy-Protokoll bietet eine praktische Möglichkeit, Verbindungsinformationen wie z. B. die Adresse eines Clients sicher über mehrere Schichten von Schemata von Network-Address-Translation (NAT) oder TCP-Proxys zu transportieren. Es ist so konzipiert, dass nur geringe Änderungen an bestehenden Komponenten erforderlich sind und die Leistungsbeeinträchtigung durch die Verarbeitung der transportierten Informationen begrenzt wird.
- Der Proxy-Protokoll-Header ist der Block von Verbindungsinformationen, den der Verbindungsinitiator am Anfang einer Verbindung voranstellt, wodurch der Header aus Sicht des Protokolls die maßgebliche Bezeichnung für die Quelle der Verbindung ist.
- Das Ziel des Proxy-Protokolls ist es, die internen Strukturen des Servers mit den vom Proxy gesammelten Informationen zu füllen, die der Server selbst hätte erhalten können, wenn sich der Client direkt mit dem Server statt über einen Proxy verbunden hätte. Die vom Protokoll übertragenen Informationen sind solche, die der Server mit den Methoden getsockname() und getpeername() erhalten würde:
- - Adressfamilie (AF_INET für IPv4, AF_INET6 für IPv6, AF_UNIX)
- - Socket-Protokoll (SOCK_STREAM für TCP, SOCK_DGRAM für UDP)
- - Schicht
3 (IP) Quell- und Zieladressen - - Schicht
4 (z. B. TCP oder UDP) Quell- und Zielports, falls vorhanden - Der gesamte Header wird immer auf einmal geliefert, wenn die Socket-Puffer zu Beginn einer Verbindung noch leer sind. Der Sender muss immer sicherstellen, dass der Header auf einmal gesendet wird, damit die Transportschicht die Atomarität auf dem Weg zum Empfänger erhält. Der Empfänger kann tolerant gegenüber unvollständigen Headern sein oder die Verbindung einfach abbrechen, wenn er einen unvollständigen Header erhält.
- Der Web-Crawler hat zwei Hauptansätze zur Umsetzung seiner Aufgaben: synchron und asynchron. Die synchrone Methode (auch als Echtzeit-Methode bezeichnet) holt die Daten über dieselbe Verbindung zum Benutzer ab. Die asynchrone Methode (auch Callback-Methode genannt) baut eine andere Verbindung für die Datenlieferung auf und verwendet diese. Die vorgestellten Ausführungsformen funktionieren generell im synchronen Web-Scraping-Modell.
- Bei der synchronen Datenübermittlungsmethode sendet der Benutzer die Anfrage an den Web-Crawler, und der Crawler gibt die angeforderten Daten über dieselbe offene HTTP(S)-Verbindung zurück. Da die asynchrone Datenbereitstellungsmethode die Möglichkeit bietet, zu entscheiden, wann die angeforderten Daten abgerufen werden sollen, ist es nicht erforderlich, eine offene Verbindung zwischen dem Kunden und den Backend-Diensten, wie z. B. einem Web-Crawler, aufrechtzuerhalten. Der Web-Crawler informiert den Benutzer, wenn die Daten bereit sind. In beiden Fällen wird die Aufgabe für den Web-Crawler formuliert, indem eine Liste von Ziel-URLs bereitgestellt wird, auf die der Crawler zuzugreifen versuchen muss.
- ZUSAMMENFASSUNG
- Es gibt mehrere Probleme im Zusammenhang mit der Leistung von Web-Crawlern, darunter unzureichende Informationen, die von den Inhaltsquellen gesammelt werden, unzureichende Eigenschaften der Anfrage und begrenzte Fähigkeiten der eingesetzten Proxys. Ein Proxy der nächsten Generation kann für zusätzliche Zwecke eingesetzt werden, als nur den Datenverkehr des Benutzers weiterzuleiten und die Informationen zurückzugeben. Proxys der nächsten Generation können die Informationen des Benutzers einsehen und bei Bedarf ändern, um bessere Scraping-Ergebnisse zu erhalten. Mit Proxys der nächsten Generation ist es möglich, die Logik, die von Proxys abhängt, weiterhin zu nutzen. Außerdem kann ein Proxy der nächsten Generation den größten Teil der Entsperrungslogik übernehmen, die ein Benutzer persönlich verwalten müsste. Benutzer müssen die Logik zur Überwindung von Sperrungen nicht kennen, die Teil der vom Dienstanbieter eingesetzten Scraping-Funktionalität wird. Der Proxy der nächsten Generation ist in der Lage, die Scraping-Logik so anzupassen, dass mögliche Einschränkungen und Hindernisse umgangen werden können.
- In einem Aspekt offenbaren die hierin beschriebenen Ausführungsformen ein Verfahren zur Optimierung der Parameter einer Scraping-Anfrage eines Benutzers auf der Seite des Dienstanbieters. Bei der Verarbeitung der Scraping-Anfrage, die über das HTTPS-Protokoll an ein Ziel gerichtet ist, findet der Standard-TLS-Handschlag (TLS: Transport Layer Security) zwischen der Infrastruktur des Dienstanbieters, d. h. dem eigentlichen Scraping-Agenten, und dem Ziel statt, während der für die Anfrage verwendete Ausgangsknoten unter Verwendung einer HTTP-Methode - CONNECT - zum Aufbau eines Netzwerktransportschichttunnels zum Ziel im Namen des Scraping-Geräts durchlaufen wird.
- Die hierin detailliert beschriebenen Ausführungsformen erweitern die Verfahren zur Umsetzung von Aufgaben, einschließlich der Ausrichtung auf einen Schritt eines Web-Crawling-Prozesses - einen Schritt der Übermittlung einer Anfrage durch einen Kunden an einen Web-Crawler. Die hierin detaillierten Ausführungsformen ermöglichen es, eine komplexere Anfrage für einen Web-Crawler zu definieren und somit spezifischere Daten zu erhalten. Das Datenabrufsystem und - verfahren des Web-Crawlers bleibt dabei unverändert. Dies beinhaltet den gleichen allgemeinen Web-Crawler-Aufgabenablauf, d.h. die Annahme der Anfrage vom Benutzer, den Versuch, die angeforderten Daten abzurufen, und die Übermittlung der Daten an den Benutzer.
- Die hierin beschriebenen Ausführungsformen arbeiten in einer Umgebung eines Datenabrufsystems, d. h. Benutzer - Datenabrufsystem - Ziel im Web, und beschreiben ein untrennbares strukturelles und funktionales Element eines Datenabrufsystems. Im Wesentlichen verbessern die hierin beschriebenen Ausführungsformen das System in drei Bereichen: Aufgabendefinition, sichere Aufgabenimplementierung und Ergebnisoptimierung. Die hierin beschriebenen Ausführungsformen ermöglichen es dem Benutzer, umfassendere Aufgaben für ein Datenabrufsystem zu formulieren, einschließlich der Möglichkeit, HTTP-Anfrage-Header und Cookies zu übermitteln, anstatt nur eine URL an reine Datenabrufsysteme zu übermitteln, die nicht zusätzlich mit einer Funktionalität zur Beachtung der Anfrageparameter ausgestattet sind.
- Der Proxy der nächsten Generation ermöglicht es dem Benutzer, ein Token zu erstellen, mit dem der Proxy die gleiche IP-Adresse oder Sitzung wiederverwenden kann. Beim Betrieb eines Datenabrufsystems wird eine Sitzung aufrechterhalten, indem der gleiche Ausgangsknoten eines Proxy-Servers für mehrere HTTP-Anfragen beibehalten wird.
- Zusätzlich zur regulären Funktion dieser Fähigkeit ermöglichen die hierin beschriebenen Ausführungsformen das Senden von benutzerdefinierten HTTP-Headern und Cookies über den reservierten Ausgangsknoten. Die Unterstützung von POST-Anfragen ermöglicht es dem Benutzer, auch während der gleichen Sitzung Daten an das Web-Ziel zu senden. Im regulären Betrieb des Datenabrufsystems wird die GET-Methode in HTTP-Anfragen verwendet, um das Ziel aufzurufen. Die hierin beschriebenen Ausführungsformen ermöglichen ebenfalls die Verwendung der POST-Methode. Bei der GET-Methode, die die Standardeinstellung ist, muss die HTTP-Anfrage nicht deklariert werden, während die POST-Methode explizit deklariert werden muss.
- Die hierin beschriebenen Ausführungsformen erlauben es dem Benutzer, bestimmte, von den Standardwerten abweichende HTTP-Antwortstatuscodes als annehmbar zu deklarieren. Das System behandelt die Antworten mit den deklarierten Statuscodes als korrekt und leitet die abgerufenen Daten an den nächsten Datenverarbeitungsschritt weiter. Spezifische Statuscodes werden in der Nachricht der HTTP-Anfrage deklariert.
- Die hierin beschriebenen Ausführungsformen ermöglichen es, zu prüfen, ob die URL des Benutzers korrekt ist, und, falls nicht, Änderungen an der URL vorzunehmen (in einer Weise, dass die URL nicht vom Ziel blockiert wird). Die Lösung ermöglicht auch das Ändern der HTTP-Header und Cookies oder das Hinzufügen benötigter HTTP-Header oder Cookies, wenn HTTP-Header oder Cookies vom Benutzer für den Proxy-Betrieb nicht ausreichend konfiguriert oder gesetzt sind.
- Die hierin beschriebenen Ausführungsformen ermöglichen es, die Anfragen des Benutzers zu wiederholen, ohne den Benutzer zu benachrichtigen. Der Benutzer muss die Anfrage nicht wiederholt senden. Der Proxy der nächsten Generation sieht, dass die Anfrage nicht korrekt ausgeführt wurde und sendet die Anfragen erneut an das Ziel, bis zufriedenstellende Ergebnisse zusammengetragen wurden. Daher erhöht der Proxy der nächsten Generation die Erfolgsquote der Scraping-Ergebnisse erheblich.
- Der Proxy der nächsten Generation kann die vom Benutzer bereitgestellten Parameter in Echtzeit überprüfen und direkt mitteilen, dass die Parameter technisch unzureichend sind oder nicht ausreichen, um den richtigen Anfrage-Antwort-Sitzungskontext zu gewährleisten. Der Proxy der nächsten Generation kann auch die Funktionalität des Scrapings durch einen großen Pool von Proxy-IP-Adressen als zusätzliche Sicherheitsebene gegen das Blockieren oder Verfälschen von Ergebnissen durch die Anti-Scraping-Techniken nutzen.
- Figurenliste
- Die Merkmale und Vorteile der hier beschriebenen Ausführungsbeispiele werden dem Fachmann auf dem Gebiet, auf das sich diese Offenbarung bezieht, beim Lesen der folgenden Beschreibung unter Bezugnahme auf die begleitenden Zeichnungen deutlich werden:
-
1 ist ein beispielhaftes Komponentendiagramm, das die Gesamtarchitektur der Komponenten und den Kontext von mindestens einem Aspekt der Lösungsfunktionen zeigt. -
2A zeigt einen beispielhaften allgemeinen Aufbau aus dem Stand der Technik für derzeit verwendete Scraping-Funktionen. -
2B zeigt eine beispielhafte erfindungsgemäße Implementierung von Scraping-Techniken mit Scraping-Logik, die beim Dienstanbieter angesiedelt ist. -
3A ist ein beispielhaftes Sequenzdiagramm, das den Weg der Scraping-Anfrage unter Verwendung eines Proxys der nächsten Generation beschreibt. -
3B ist eine beispielhafte Darstellung der Scraping-Anfrage und ist eine Fortsetzung von3A . -
4A ist ein beispielhaftes Sequenzdiagramm der Scraping-Anfrage, wenn das Ziel eine fehlerhafte Antwort zurückgibt. -
4B ist ein beispielhaftes Sequenzdiagramm der Scraping-Anfrage, wenn das Ziel eine fehlerhafte Antwort zurückgibt, und ist eine Fortsetzung von4A . -
4C ist ein beispielhaftes Sequenzdiagramm der Scraping-Anfrage, wenn das Ziel eine fehlerhafte Antwort zurückgibt, und ist eine Fortsetzung von4B -
5 ist ein beispielhaftes Sequenzdiagramm, das die Optimierung der Scraping-Anfrage durch den Proxy der nächsten Generation beschreibt. -
6 ist ein beispielhaftes Computersystem, das die offengelegten Methoden ausführt. - DETAILLIERTE BESCHREIBUNG
- Einige allgemeine Beschreibungen der Terminologie können hilfreich sein und sind hier der Einfachheit halber enthalten und sind im weitestmöglichen Sinne zu interpretieren.
- Die Elemente
104 bis110 identifizieren Teile der Dienstanbieter-Infrastruktur, wobei die Elemente102 ,116 ,118 ,120 externe Komponenten oder Systeme zeigen. - Benutzergerät
102 - kann jedes geeignete Benutzer-Computergerät sein, einschließlich, aber nicht beschränkt auf ein Smartphone, ein Tablet-Computergerät, ein Personal Computer, ein Laptop-Computergerät, ein Spielgerät, ein Fahrzeug-Infotainment-Gerät, ein intelligentes Gerät (z. B. ein intelligenter Kühlschrank oder ein intelligentes Fernsehgerät), ein Cloud-Server, ein Großrechner, ein Notebook, ein Desktop, eine Workstation, ein mobiles Gerät oder ein anderes elektronisches Gerät, das für eine Scraping-Anfrage verwendet wird. - Anfrageoptimierer
104 - ist ein Proxy der nächsten Generation, der ein Teil der Infrastruktur des Dienstanbieters ist, der Anfragen vom Benutzergerät annimmt und Anfragen durch das System umsetzt. Mithilfe eines Analysealgorithmus kann der Anfrageoptimierer die Metadaten der Anfrage lesen und die Anfrage mithilfe verschiedener vorher festgelegter Scraping-Strategien anpassen, um das Ziel besser abzurufen. Es ist zu beachten, dass die Metadaten der Antwort für den Anfrageoptimierer104 immer sichtbar sind, z. B. URL und HTTP-Header. Diese Funktionalität ist notwendig, damit der Anfrageoptimierer104 die Anfrageparameter korrekt verarbeiten kann, um die Anfrage zu analysieren und anzupassen. - Proxy-Rotator
106 - ist ein Teil der Dienstanbieter-Infrastruktur und ist mit separaten externen Komponenten gekoppelt, die spezifische Assistenzfunktionen implementieren, und ist für die Proxy-Steuerung, Rotation, Wartung, das Sammeln von statistischen Daten und die Berichterstattung verantwortlich. - Proxy A 108 und Proxy B 110 - bezeichnen eine beispielhafte Vielzahl von Proxy-Servern (Computersysteme oder Anwendungen), die für die Client-Verbindung geöffnet sind und als Vermittler für Anfragen von Clients fungieren, die Ressourcen von anderen Servern suchen. Ein Client verbindet sich mit dem Proxy-Server und fordert einen Dienst an, z. B. eine Datei, eine Verbindung, eine Webseite oder andere Ressourcen, die von einem anderen Server verfügbar sind. Der Proxy-Server wertet die Anfrage nach Inhalten aus und leitet die Anfrage an die eigentliche(n) Zielressource(n) weiter, die den eigentlichen Inhalt enthalten. Nach Erhalt des Inhalts leitet der Proxy-Server den Inhalt normalerweise an den ursprünglichen Absender der Anfrage weiter, es können aber auch andere Aktionen des Proxys durchgeführt werden (z. B. Rückgabe einer Fehlermeldung). In einem Aspekt in mindestens einer der hierin beschriebenen Ausführungsformen hat ein Proxy-Server möglicherweise nicht die volle Einsicht in den tatsächlichen Inhalt, der für den ursprünglichen Absender der Anfrage abgerufen wird, z. B. im Falle einer verschlüsselten HTTPS-Sitzung, wenn der Proxy nicht der entschlüsselnde Endpunkt ist, dient der Proxy als Vermittler, der die Daten blind weiterleitet, ohne zu wissen, was weitergeleitet wird. Es ist jedoch zu beachten, dass die Metadaten der Antwort für den Dienstanbieter immer sichtbar sind, z. B. HTTP-Header. Diese Funktionalität ist notwendig, damit der Proxy die erhaltenen Daten korrekt an die richtige anfragende Partei - den Endbenutzer oder das vermittelnde Proxy-Gerät - weiterleiten kann. Proxy A und Proxy B werden hier als einfachen Hinweis darauf dargestellt, dass es mehr als einen Proxy-Server geben kann, der in der Dienstanbieter-Infrastruktur
114 vorgehalten wird. Die Ausführungsformen sollten nicht auf die Proxys beschränkt sein, die dem Dienstanbieter gehören. Die Proxys können im Besitz einer beliebigen dritten Partei sein und von dieser verwaltet werden, jedoch hat der Dienstanbieter immer Zugriff auf diese Proxys und kann sie nutzen. - Proxy-Datenbank
112 - ist eine strukturierte Datenbank (DB), die in einem Datenspeichergerät enthalten ist, z. B. einer Computerfestplatte oder einem Computerspeicher. Die Besonderheiten der Implementierung der Proxy-Datenbank sind für die bereitgestellte Funktionalität nicht relevant, sei es eine Anwendung von horizontaler oder vertikaler Partitionierung, hardwarebasiertes Clustering, ein verteiltes Modell auf Anwendungsebene; mit jeder dieser Optionen, die innerhalb eines einzelnen Hardware-Geräts oder in verteilter Weise betrieben werden, wobei die Daten über mehrere Schema-Instanzen, Server, Rechenzentren, Länder oder Kontinente verteilt sein können, um die Last zu verteilen, die Leistung zu verbessern, die Ausfallsicherheit der Plattform oder andere Ziele zu gewährleisten. Die Proxy-Datenbank wird mit Daten aus dem Proxy-Rotator bestückt und enthält Informationen über alle für den Dienstanbieter verfügbaren Proxys. - Ziel A 116 und Ziel B 118 - ist eine beispielhafte Vielzahl von Webservern, die den über HTTP/HTTPS-Protokolle zugänglichen Inhalt anbieten. Die beiden Ziele, Ziel A und Ziel B, werden hier als einfacher Hinweis darauf dargestellt, dass es mehr als ein Ziel geben kann, aber dies sollte in keiner Weise als Einschränkung des Umfangs der Offenlegung verstanden werden. Es kann eine unbegrenzte Anzahl von Zielen im Netzwerk geben.
- Netzwerk
120 - ist ein digitales Telekommunikationsnetzwerk, das es den Knoten ermöglicht, Ressourcen gemeinsam zu nutzen und darauf zuzugreifen. Beispiele für ein Netzwerk: Local-Area-Networks (LANs), Wide-Area-Networks (WANs), Campus-Area-Networks (CANs), Metropolitan-Area-Networks (MANs), Home-Area-Networks (HANs), Intranet, Extranet, Internetwork, Internet. - Scraping-Logik
202 - ist ein Algorithmus, der vom Anfrageoptimierer104 eingesetzt wird und die Aufgabe hat, eine Vielzahl von vorher festgelegten Anfrageparametern auszuwählen, die für eine bestimmte Scraping-Anfrage ausgewählt werden, um bestimmte Daten vom Ziel zu suchen und zu sammeln. Die Scraping-Logik202 enthält eine große Anzahl von Scraping-Strategien504 . - Scraping-Strategie
504 - ist ein Satz von Anfrageparametern und deren Werten, die für einen bestimmten Typ von Anfrage oder Ziel optimiert sind und die der Anfrageoptimierer104 auf die ursprüngliche Anfrage anwendet, basierend auf den Entscheidungen, welche Anpassungen in die ursprüngliche Anfrage eingeführt werden sollten. Die Entscheidungen beruhen auf der Scraping-Logik202 . Die Scraping-Strategie504 kann ein vordefiniertes Artefakt sein, das zuvor geplant, entwickelt und manuell registriert wurde. Die Scraping-Strategie504 kann auch von der Scraping-Logik202 dynamisch auf Grundlage der automatischen aggregierten Analyse der Scraping-Ergebnisse gebildet werden. - Positive Antwort - ist eine HTTP-Antwort, die als relevant erachtet und standardmäßig an den Benutzer weitergeleitet wird, wie z. B.: 2xx - alle erfolgreichen Antworten; 4xx - Client-Fehler (mit 5 Ausnahmen: 429, 407, 408, 444, 499).
- Negative Antwort - ist eine HTTP-Antwort, die vom Benutzer als nicht akzeptabel angesehen wird, oder Standard-Systemcodes, die erfolglose Ergebnisse bedeuten, wie z. B.: 429, 407, 408, 444, 499; 5xx - alle Serverfehler.
- In einem Aspekt verwendet das (die) hierin beschriebene(n) Scraping-System(e) das Standard-HTTP-Anfrage/Antwort-Modell zum Aufrufen und Zugreifen auf Ziele. Dieses Modell beschreibt die Client-Server-Kommunikation über das Web. Ein Client sendet eine HTTP-Anfrage an den Server mit der Bitte, auf bestimmte Daten zuzugreifen. Ein Server sendet eine HTTP-Antwort mit den angeforderten Daten an den Client zurück. Die HTTP-Anfrage gibt die Ziel-URL, die Zugriffsmethode, die Header und den Hauptteil der Anfrage an. Die HTTP-Antwort gibt Statusinformationen, die Header und die angeforderten Daten zurück.
- Im regulären Betrieb des Datenabrufsystems kann der Benutzer nur den URL-Parameter in der HTTP-Anfrage steuern. Alle anderen Parameter der Anfrage werden durch das Datenabrufsystem gesteuert.
-
1 zeigt ein beispielhaftes Komponentendiagramm der Gesamtarchitektur der offengelegten Komponenten und den Kontext von mindestens einem Aspekt der Lösungsfunktionen. In mindestens einem Aspekt zeigen die vorliegenden Ausführungsformen die Kommunikation zwischen dem Benutzergerät102 und der Dienstanbieter-Infrastruktur114 , um ein beliebiges Ziel116 zu erreichen; 118 im Netzwerk120 . Die Dienstanbieter-Infrastruktur114 setzt sich zusammen aus dem Anfrageoptimierer104 ; dem Proxy-Rotator106 ; der Proxy-Datenbank112 ; und mindestens einem Proxy108 ;110 .1 zeigt, dass das Benutzergerät102 nicht Teil der Dienstanbieter-Infrastruktur114 ist und sich als unabhängiges Gerät außerhalb dieser Infrastruktur befindet. Das Benutzergerät102 kann ein beliebiges Gerät sein, das über ein beliebiges Netzwerk, in den meisten Fällen jedoch über das Internet, eine Verbindung zu einer Dienstanbieter-Infrastruktur herstellen kann. Solche Geräte können ein Computer, ein Mobiltelefon, ein Tablet oder ein beliebiges anderes elektronisches Gerät sein.1 zeigt, dass sich die Ziele116 ;118 außerhalb der Dienstanbieter-Infrastruktur114 befinden und sich in einem beliebigen Netzwerk120 befinden. In den meisten Fällen ist das Netzwerk120 das Internet. Der Anfrageoptimierer104 ermöglicht es dem Benutzer, die Anfrageparameter - HTTP-Header & Cookies, HTTP-Methoden (wie POST, GET, PUT, PATCH und DELETE) bis zu einem gewissen Grad zu modifizieren. Der Benutzer hat auch die Möglichkeit, eine HTTP-Sitzung aufzubauen und Erfolgsbedingungen für die Anfrage an die Zielserver zu definieren. -
2A stellt ein beispielhaftes Gerät nach dem Stand der Technik dar, bei dem sich die Scraping-Logik202 im Benutzergerät102 befindet.2B zeigt aktuelle Ausführungsformen, bei denen sich die Scraping-Logik202 in der Dienstanbieter-Infrastruktur114 befindet. Die Scraping-Logik verfügt über mehrere hundert oder tausend Scraping-Strategien. Scraping-Strategien werden durch die Analyse der Parameter des Ziels und die Definition von Best Practices für das Scraping bestimmter Ressourcen auf der Grundlage der Untersuchung und Auswertung der Antwortdaten des Ziels entwickelt. Zumindest einige der Kontextparameter der Scraping-Anfrage werden festgelegt, damit die passende Scraping-Strategie ausgewählt und angewendet werden kann: - - Erstellen des anfänglichen Kontextes für die Scraping-Anfrage, der die notwendigen Parameter umfasst, z. B. Header, Cookies, Browsereinstellungen des Benutzers, die dem Webserver während des ersten Kontakts vorgelegt werden. Die Erstellung des besagten Kontexts kann einen strikten Prozess der Vorab-Erstellung eines organischen, menschenähnlichen Browsing-Profils erfordern, indem mindestens eine Seite innerhalb des Ziels besucht wird, die nicht die Seite ist, die der Zweck des Scrapings ist, um das Browsing-Profil mit den Cookies des Ziel-Webservers zu bestücken. Andere Aktivitäten zur Erstellung des entsprechenden Sitzungskontextes können das Durchsuchen mehrerer Seiten innerhalb desselben Ziel-Webservers oder - für ein reichhaltigeres Browsing-Profil - die Darstellung des Verlaufs von Besuchen auf anderen Webservern, Aktivitäten in den sozialen Netzwerken und Ähnliches umfassen.
- - Der geeignete geografische Standort für den Proxy der letzten Meile.
- - Die entsprechende Zeitüberschreitung, die definiert ist, damit die Seite als erfolgreich ausgegeben gilt, wenn ein Headless-Browser als Anwendung für die Scraping-Anfrage verwendet wird.
- - Die Inhaltselemente, die zwingend erforderlich sind, damit die Seite als erfolgreich ausgegeben gilt, wenn ein Headless-Browser als Anwendung für die Scraping-Anfrage verwendet wird.
- - Die definierten Richtlinien für die Verarbeitung von HTTP-Weiterleitungen.
- - Die Richtlinien, die definieren, welche HTTP-Codes zur Signalisierung von blockierten Browsing-Versuchen zu betrachten sind, die wiedeholt werden sollten.
- - Die Richtlinien, die definieren, welche HTTP-Codes als durch Captcha blockiert gelten und entsprechend wiederholt werden.
- - Die Richtlinien, die definieren, welche HTTP-Header für die Scraping-Anfrage obligatorisch sind, unabhängig von ihrem Vorhandensein in der ursprünglichen Anfrage des Benutzers.
- - Die Richtlinien, die definieren, welche HTTP-Cookies für die Scraping-Anfrage obligatorisch sind, unabhängig von ihrem Vorhandensein in der ursprünglichen Anfrage des Benutzers.
- - Die Richtlinien, die definieren, welche HTTP-Header durch ihre Gegenstücke ersetzt werden müssen, die als effektiver angesehen werden.
- - Die Richtlinien, die definieren, welche HTTP-Header entfernt werden müssen, unabhängig davon, ob der Benutzer sie absichtlich in die ursprüngliche Anfrage aufgenommen hat.
- - Die Richtlinien, die definieren, welche HTTP-Header innerhalb der Scraping-Anfrage vorhanden sein sollen (z. B. ‚User-Agent‘ für Chrome oder Firefox).
- - Die Richtlinien, die definieren, welche Art von Proxys für die Scraping-Anfrage verwendet werden sollen (Rechenzentrums-Proxys, Residential-Proxys, Mobile-Proxys, etc.). Der Hauptfaktor, an dem sich die Proxy-Auswahl orientiert, ist das Ziel, für das die Strategien verwendet werden sollen. Eine spezialisierte Strategie wird für ein bestimmtes Ziel erstellt, basierend auf der Durchführung von Scraping-Tests und der Auswahl der Optionen, die das beste Verhältnis zwischen Erfolg und Misserfolg ergeben. Die angewandte Scraping-Strategie kann auch vom Inhalt der Benutzeranfrage abhängen: HTTP-Methode, Anfrageparameter, spezifische benutzerdefinierte Anforderungen.
- Die hierin beschriebenen Ausführungsformen unterscheiden sich von den aktuellen Industriestandards für die Verwaltung der Scraping-Logik in mehreren Aspekten, einschließlich der Tatsache, dass Scraping-Funktionen, die zuvor von einem Benutzer, d. h. dem Kunden, ausgeführt wurden, nun auf der Seite des Dienstanbieters ausgeführt werden. Im Stand der Technik modifiziert die Dienstanbieter-Infrastruktur
114 die vom Benutzergerät102 empfangenen Anfragen nicht, sondern leitet die Anfrage blind an das Ziel116 weiter. Die neue Lösung stellt einen Weg dar, um sicherzustellen, dass die Antwort des Ziels116 genauer ist, indem der Dienstanbieter die Scraping-Logik202 verwendet. Die Scraping-Logik enthält einen Satz vorher festgelegter Regeln für die Zuweisung einer bestimmten Scraping-Strategie oder Strategien zu einer Anfrage, basierend auf der Analyse der Anfrage (Scraping-Strategien). Ein Satz von vordefinierten Anfrageparametern und deren Werte, die für einen bestimmten Typ von Anfrage oder Ziel optimiert sind, werden im Anfrageoptimierer104 platziert, können vom Anfrageoptimierer104 gelesen werden und passen die vom Benutzergerät102 empfangene Anfrage an. -
3A ist ein Ablaufdiagramm, das den Weg einer Scraping-Anfrage beschreibt.3B ist die Fortsetzung des Ablaufs der Scraping-Anfrage. Der Ablauf beginnt, sobald das Benutzergerät eine Anfrage (Schritt302 ) an den Dienstanbieter sendet, genauer gesagt an den Anfrageoptimierer104 . Der Anfrageoptimierer104 prüft die Anfrageparameter (Schritt304 ), wobei mindestens die URL-Adresse, die Header und die Cookies geprüft werden. Der Hauptteil der Anfrage kann in bestimmten Situationen auch modifiziert werden, z. B. wenn das Ziel der Scraping-Anfrage eine Webseite innerhalb der Top-Level-Domain (TLD) „.com‟ ist, fügt die Strategie die Anforderung hinzu, die Proxys zu verwenden, die die USA als geografischen Standort haben. Der Hauptteil der HTTP-Antwort wird ebenfalls analysiert, um zu erfahren, ob die erhaltenen Daten mit der Anfrage übereinstimmen. Ebenso können die Parameter der Anfrage des Benutzers geändert werden, um bessere Scraping-Ergebnisse zu erhalten. Ein Beispiel für solche Änderungen kann wie folgt beschrieben werden: - Ein Benutzer sendet eine Scraping-Anfrage an den Dienstanbieter, wobei der Hauptteil der HTTP-Anfrage als Inhaltstyp einen der MIME-Typen (Multipurpose Internet Mail Extensions) „komprimierte Datei“ aufweist, z. B. im .zip-Format (MIME type= application/zip). Der Dienstanbieter identifiziert das Ziel jedoch als ein System, das besser mit komprimierten Daten im .gz-Format (MIME type= application/gzip) funktioniert. Die Anfrage-Optimierungsplattform innerhalb der Dienstanbieter-Infrastruktur untersucht die Header und den Hauptteil der Anfrage, identifiziert diese Diskrepanz und passt sie entsprechend an, indem sie den Inhalt in das passende Format konvertiert sowie die entsprechenden Header aktualisiert.
- Ein weiteres Beispiel für die Anpassung des Hauptteils der HTTP-Anfrage ist die Anfrage eines Benutzers, die einen XML-Inhalt im Hauptteil enthält (d. h. MIME type=application/xml). Ein Dienstanbieter hat eine vorher festgelegte Scraping-Logik-Richtlinie, die besagt, dass das angefragte Ziel mit hoher Wahrscheinlichkeit HTTP-Anfragen mit XML-Inhalt im Hauptteil blockiert, der für einen Menschen nicht lesbar ist. Daher passt der Dinstanbieter die Anfrage an die Eigenheiten des Webservers an, indem er z. B. den Inhaltstyp ändert (z. B. auf MIME type= text/xml). In dieser Situation werden der Hauptteil und die Header der Anfrage vom Dienstanbieter angepasst, um eine Blockierung durch das Ziel zu vermeiden und dementsprechend bessere Scraping-Ergebnisse zu erhalten. In einem weiteren Beispiel kann der Hauptteil der HTTP-Anfrage unter Verwendung der Verschlüsselungswerkzeuge des Dienstanbieters verschlüsselt werden, während die Anfrage geändert wird, wobei die für die Beschreibung notwendigen Artefakte entweder über einen alternativen Kanal oder in einem benutzerdefinierten Header innerhalb der Anfrage an die Zielpartei übertragen werden.
- Wenn also die Parameter in der Anfrage nicht als derart mit dem entsprechenden Ziel korrespondierend erachtet werden, wie es als am effektivsten angesehen wird, werden sie gemäß der Scraping-Logik
202 angepasst, die in den Speicher des Anfrageoptimierers104 geladen ist (Schritt306 ). Der Anfrageoptimierer104 prüft, ob die URL-Adresse korrekt angegeben ist, und wenn nicht, dann wird die URL-Adresse so korrigiert, dass die Blockierungsrate minimiert wird. Der Anfrageoptimierer104 prüft auch die Header und Cookies der Anfrage und passt sie so an, dass die Qualität der Anfrage sowie die Qualität der Daten, die von einem Ziel zu erwarten sind, erhöht werden. - Der Hauptteil der HTTP-Anfrage kann unter bestimmten Umständen auch modifiziert werden, z. B. wenn das Ziel der Scraping-Anfrage in einer „.com‟ TLD liegt, schreiben die Richtlinien der Scraping-Logik vor, dass Proxys mit US-amerikanischem Standort für die Bearbeitung der Anfrage angefragt werden. Der Hauptteil der HTTP-Anfrage wird ebenfalls analysiert und ggf. angepasst, um bessere Scraping-Ergebnisse zu gewährleisten.
- In mindestens einem Fall werden, nachdem die Anfrage vom Benutzer erhalten und der initiale Scraping-Sitzungskontext konstruiert wurde, für die Auswahl einer zu bestimmenden Strategie für die Anfrage bestimmte Richtlinien auf Benutzeranfragen angewendet, bevor ein Scraping der eigentlichen Zielseite stattfindet:
- - der Detaillierungsgrad, den das Browsing-Profil des Scraping-Agenten haben soll, d. h., wenn die Homepage des Ziels vor dem eigentlichen Scraping besucht werden soll, wie viele Besuche auf den Webseiten des Ziels erforderlich sind, wenn nur ein Besuch der Startseite oder anderer Seiten erforderlich ist, um einen organisches Profil eines Benutzers zu erstellen, und/oder wenn der Besuch anderer Webseiten als des Ziels, z. B. sozialer Netzwerke, Unterhaltungsseiten, elektronischer Shops usw., erforderlich ist
- - Geografischer Standort des vom Proxy-Rotator
106 bereitgestellten Proxys. - - Timeout-Schwelle für das Darstellen der Seite, falls ein Headless-Browser verwendet wird.
- - Inhaltselemente, die vorhanden sein müssen, damit die Seite als dargestellt gilt, wenn ein Headless-Browser verwendet wird.
- - Ob Umleitungen verfolgt werden sollen.
- - HTTP-Statuscodes, die als blockiert gelten und entsprechend wiederholt werden sollten.
- - HTTP-Statuscodes, die als durch Captcha blockiert gelten und entsprechend wiederholt werden sollten.
- - HTTP-Anfrage-Header, die immer in die Anfrage eingefügt werden sollen, unabhängig davon, ob der Benutzer sie ursprünglich eingefügt hat.
- - HTTP-Request-Cookies, die immer in die Anfrage eingefügt werden sollen, unabhängig davon, ob der Benutzer sie ursprünglich eingebunden hat.
- - HTTP-Anfrage-Header, die durch ihre besseren Gegenstücke ersetzt werden müssen.
- - HTTP-Anfrage-Header, die aus der Anfrage entfernt werden müssen, auch wenn der Benutzer sie in die Anfrage aufgenommen hat.
- - Typen von HTTP-Anfrage-Headern, die vorhanden sein sollten (z. B. ‚U-ser-Agent‘ für Chrome oder Firefox).
- - Art der Proxys, die verwendet werden sollen (Rechenzentrum, Residential, Mobile, etc.)
- Die Aktivitäten zur Optimierung der von Kunden abgesendeten HTTP-Anfragen sind transparent, d. h., sobald die Anfrage vom Benutzer gestartet wurde, wird sie der Analyse und den Anpassungen gemäß der gewählten Scraping-Strategie unterzogen, wobei keine Interaktion seitens des verursachenden Benutzers erforderlich ist.
- Wenn der Anfrageoptimierer
104 Ineffizienzen oder Fehler in den Headern und Cookies der Anfrage bemerkt, passt er die Parameter gemäß einem Satz vorher festgelegter Regeln an, die einer Anfrage eine bestimmte Scraping-Strategie oder Strategien zuweisen (gilt für die Scraping-Logik202 ). HTTP-Header sind Bestandteile der Anfragenachricht und werden verwendet, um dem Server zusätzliche Informationen über das angeforderte Ziel zu übermitteln. Sie werden in der HTTP-Nachricht als Schlüssel-WertePaare definiert. Die Beispiel-HTTP-Anfragenachricht kann folgende Parameter enthalten: Zieladresse (z. B. http://scraping.com:60000), Sprachanforderungen (z. B. en-US); Inhalt/Typ der Anfrage (z. B. application/octetstream), benutzerdefinierten Header angeben, geografischer Standort (z. B. US), Cookie-Index (z. B. SID=1234567890; SLK_TJJ=0987654321). Wenn die Anfrage keine Änderungen benötigt, werden keine Korrekturen durch den Anfrageoptimierer104 durchgeführt, jedoch prüft der Anfrageoptimierer104 den Inhalt der Anfrage. - In mindestens einem Aspekt erläutern die hierin beschriebenen Ausführungsformen weiter, dass der Anfrageoptimierer
104 einen Proxy vom Proxy-Rotator106 erhält. Sobald die Anfrageparameter angepasst sind, fragt der Anfrageoptimierer104 den Proxy-Rotator106 nach einem bestimmten Proxy (Schritt308 ). Der Proxy-Rotator106 greift auf die Proxy-Datenbank112 zu und wählt einen bestimmten Proxy aus, der geeignet ist, die Anfrage des Benutzers umzusetzen (Schritt310 ). Der Proxy-Rotator106 stellt dem Anfrageoptimierer104 die Informationen über den Proxy bereit (Schritt312 ). In3B werden die in3A gezeigten Schritte fortgesetzt. Der Anfrageoptimierer104 führt die Anfragen über den Proxy108 aus, der vom Proxy-Rotator106 bereitgestellt wird (Schritt314 ). Nachdem der Anfrageoptimierer104 einen Proxy erhalten hat, fährt er mit der Umsetzung einer vom Benutzergerät empfangenen Anfrage fort (Schritt314 ). Der Proxy108 erhält Daten vom angegebenen Ziel116 (Schritt316 ) und leitet diese Daten an den Anfrageoptimierer104 weiter (Schritt318 ). Der Proxy108 erhält Daten vom Ziel116 (Schritt316 ). Das Ziel kann eine beliebige Webressource im Netzwerk sein, und das Netzwerk ist normalerweise das Internet. Sobald der Proxy108 die Daten erhält, sendet der Proxy108 die Daten zurück an den Anfrageoptimierer104 (Schritt318 ). Der Proxy108 nimmt keine Änderungen an den empfangenen Daten vor und prüft nicht den Umfang oder die Qualität der Daten. Der Proxy108 überträgt lediglich die vom Ziel116 empfangenen Daten an den Anfrageoptimierer104 . Der Anfrageoptimierer104 prüft die Metadaten der Antwort (Schritt320 ). Der Proxy108 ändert die vom Ziel116 erhaltenen Informationen weder ab noch liest er sie aus, da er die Daten lediglich weiterleitet. Der Anfrageoptimierer104 prüft jedoch die Metadaten der Antwort, d. h. er untersucht die Parameter der vom Ziel erhaltenen Antwort (Schritt320 ), z. B. den HTTP-Antwortcode. - Wenn die Serverantwort empfangen wird, enthält die HTTP-Nachricht Details über den Antwortstatus. Der Antwortstatus informiert darüber, was das Ergebnis des Versuchs ist, das Ziel
116 zu erreichen. Antwortstatuscodes beziehen sich auf Gruppen möglicher Ergebnisse: - - 2xx - Erfolgreiche Antworten (positive Antwort);
- - 3xx - Umleitungen (positive Antwort);
- - 4xx - Client-Fehler (positive Antwort mit Ausnahmen);
- - 5xx - Serverfehler (negative Antwort).
- Im Betrieb des Web-Crawling- und Scraping-Systems werden die HTTP-Antworten die als positiv angesehen werden, an den nächsten Datenverarbeitungsschritt weitergegeben.
- Im regulären Betrieb des Systems hat der Benutzer keine Kontrolle über diese Einstellung. Standardmäßig werden nur 2xx-Codes als annehmbar angesehen. Wenn der Anfrageoptimierer
104 im System implementiert ist, kann der Benutzer bestimmte, vom Standard abweichende, Statuscodes als annehmbar deklarieren. Das System behandelt die Antworten mit den deklarierten Statuscodes als korrekt und übergibt die abgeholten Daten an den nächsten Datenverarbeitungsschritt (322 ). - Spezifische Statuscodes werden in den HTTP-Anfrage-Headern deklariert durch ‚x-successful-status-codes‘-Header mit einem Wert, der eine Liste von erfolgreichen Statuscodes enthält: [500, 502, 42069]. Wenn der Benutzer keine spezifischen Statuscodes deklariert, arbeitet der Anfrageoptimierer
104 mit Standardeinstellungen: - - 1xx - Eine benachrichtigende Antwort zeigt an, dass die Anfrage empfangen und verstanden wurde. Sie wird vorläufig ausgegeben, während die Verarbeitung der Anfrage fortgesetzt wird. Sie weist den Client darauf hin, auf eine endgültige Antwort zu warten.
- - 2xx - das System behandelt die Antwort als OK.
- - 3xx - das System folgt Umleitungen standardmäßig für eine begrenzte Anzahl von Malen. Wenn die Obergrenze erreicht ist, registriert das System einen fehlgeschlagenen Auftrag.
- - 4xx - das System behandelt die Antwort als OK mit fünf Ausnahmecodes
429 ,407 ,408 ,444 ,499 . - - 5xx - das System führt eine eine begrenzte Anzahl von Wiederholungen durch. Wenn die Obergrenze erreicht ist, registriert das System einen fehlgeschlagenen Auftrag.
- Wenn der Benutzer sich entscheidet, die benutzerdefinierten HTTP-Anfrage-Header zur Deklaration von Nicht-Standardverhalten für die Verarbeitung bestimmter HTTP-Antwortstatuscodes zu deklarieren, verhält sich der Anfrageoptimierer
104 folgendermaßen: - - 1xx - das System informiert den Benutzer, dass die angegebenen Statuscodes intermittierend sind und dass eine Änderung der Verarbeitungsweise nicht unterstützt wird.
- - 2xx - das System teilt dem Benutzer mit, dass die angegebenen Statuscodes immer einen erfolgreichen Betrieb bezeichnen und eine Änderung ihrer Verarbeitungsweise nicht unterstützt wird.
- - 3xx - das System teilt dem Benutzer mit, dass es dem Standardverhalten zum Folgen der Umleitungsanweisung des Servers befolgt.
- - 4xx - das System informiert den Benutzer, dass die angegebenen Statuscodes an den Benutzer zurückgegeben werden, wobei die ausgeschlossenen Codes (unten aufgeführt) weggelassen werden. Die ausgeschlossenen Codes können als positives Ergebnis behandelt werden, wenn dies vom Benutzer gewünscht wird.
- - 5xx - das System akzeptiert Benutzeränderungen am Standardverhalten, wenn der angegebene Code ein vollständiger 5xx HTTP-Antwortcode ist. Falls der Antwortcode in der Antwort genau mit der Konfiguration übereinstimmt - werden die Daten an den Benutzer zurückgegeben. Andernfalls folgt das System dem Standardverhalten, die Anfrage zu wiederholen.
- 4xx (mit fünf Ausnahmecodes
429 ,407 ,408 ,444 ,499 ) werden als positives Ergebnis behandelt und die Daten solcher Anfragen werden an den Benutzer zurückgegeben. Wenn das System eine der fünf Ausnahmen erhält, wiederholt es die Anfrage erneut, bis die positive Antwort eintrifft oder die Anzahl der Versuche erschöpft ist. Der Benutzer kann jedoch eine benutzerdefinierte Verarbeitung für die Ausnahmecodes festlegen und die Daten solcher Antworten an den Benutzer weiterleiten lassen. - Wenn die Antwort-HTTP-Header des Ziels die als positiv deklarierten HTTP-Antwortcodes enthalten, werden die Daten durch den Anfrageoptimierer
104 an das Benutzergerät102 weitergeleitet (Schritt322 ). In diesem Schritt erhält das Benutzergerät102 die eigentlichen Daten, z. B. den Hauptteil der HTTP-Antwort, und die Metadaten - die Header, von denen einer den HTTP-Antwort-Statuscode enthält, und als Teil der Metadaten - die benutzerdefinierten Header, die detaillierte Informationen über den Status des Scraping-Auftrags enthalten. - Die
4A ,4B und4C sind eine beispielhafte Reihe von Sequenzdiagrammen, die den den Weg der Scraping-Anfrage beschreiben, wenn das Ziel eine fehlerhafte Antwort zurückgibt. Diese Figuren zeigen im Wesentlichen die gleichen Schritte für die Anforderung eines Proxys durch den Anfrageoptimierer104 und die Verwendung dieses Proxys, um die Anfrage des Benutzers umzusetzen. Der Ablauf beginnt, sobald das Benutzergerät eine Anfrage (Schritt402 ) an den Dienstanbieter, genauer gesagt an den Anfrageoptimierer104 , sendet. Der Anfrageoptimierer104 prüft die Parameter der Anfrage (Schritt404 ) sowie die Header und Cookies. Wenn die Parameter nicht als korrekt angezeigt werden, werden sie gemäß der in den Speicher des Anfrageoptimierers104 geladenen Scraping-Logik202 angepasst (Schritt406 ). In mindestens einer hierin beschriebenen Ausführungsform wird in der Offenlegung weiter erläutert, dass der Anfrageoptimierer104 einen Proxy vom Proxy-Rotator106 erhält. Der Anfrageoptimierer fordert als nächstes den Proxy an (Schritt408 ). Der Proxy-Rotator106 erhält den Proxy von der Proxy-Datenbank112 (Schritt410 ) und liefert den Proxy an den Anfrageoptimierer104 (Schritt412 ). Nachdem er einen Proxy erhalten hat, fährt der Anfrageoptimierer104 fort, eine vom Benutzergerät empfangene Anfrage umzusetzen (Schritt414 ). Der Proxy108 erhält Daten von dem angegebenen Ziel116 (Schritt416 ) und leitet diese Daten an den Anfrageoptimierer104 weiter (Schritt418 ). Der Proxy108 nimmt keine Änderungen vor zu den empfangenen Daten und überprüft nicht den Umfang oder die Qualität der Daten. Ein Proxy108 überträgt die vom Ziel116 empfangenen Daten einfach an den Anfrageoptimierer104 . Der Anfrageoptimierer104 prüft die empfangenen Metadaten (Schritt420 ), und wenn der Antwortstatus negativ ist (z. B. 4xx-Code-Ausnahmefälle wie 429, 407, 408, 444, 499 oder 5xx-Codes), behandelt der Anfrageoptimierer104 die Antwort als fehlgeschlagen und sendet die Daten nicht an den Benutzer (Schritt422 ). In solchen Situationen passt der Anfrageoptimierer104 die Anfrageparameter an (Schritt424 ) und wiederholt die angepasste Anfrage. Die Anfrage kann angepasst werden, indem einige Parameter der Anfrage gemäß den Anweisungen innerhalb der ausgewählten Scraping-Strategie geändert werden, versucht wird, eine andere vorher festgelegte Scraping-Strategie zu verwenden, oder die Scraping-Anfrage an das Ziel ohne Änderungen in der Strategie versuchsweise gerichtet wird. - Eine Scraping-Anfrage kann entsprechend der Analyse der Antwort des Ziels angepasst werden, z. B. wenn die Metadaten innerhalb der Antwort den HTTP-Antwortcode
504 darstellen - der Anfrageoptimierer kann eine Scraping-Strategie anwenden, die einen zusätzlichen Header einführt, wohingegen der HTTP-Antwortcode403 die Anwendung einer Strategie erfordern kann, die die Anfrage mit organischen benutzerähnlichen Verhaltensmarkern anreichert, z. B. Cookies von früheren Besuchen des Ziels oder anderer Webressourcen. - Alle Teile der Antwort des Ziels sowie ihr Inhalt können für die Entscheidung über die geeigneten Anpassungen der gesamten Scraping-Strategie der Anfrage relevant sein. Einige Details darüber, wie das Ziel die angeforderten Daten zurückgibt, können ebenfalls relevant sein.
- Der Anfrageoptimierer
104 fordert einen Proxy vom Proxy-Rotator106 an (Schritt426 ). Der Proxy-Rotator106 erhält einen Proxy von der Proxy-Datenbank112 (Schritt428 ) und liefert die Informationen über den Proxy an den Anfrageoptimierer104 (Schritt430 ). Der Anfrageoptimierer104 verwendet den Proxy108 , um die Anfrage umzusetzen (Schritt432 ). Der Proxy108 erhält die Daten vom Ziel116 (Schritt434 ) und leitet die Daten an den Anfrageoptimierer104 weiter (Schritt436 ). Der Anfrageoptimierer104 prüft die Metadaten (Schritt438 ) und sendet die Daten an das Benutzergerät102 , wenn die Antwort positiv ist (Schritt440 ). Wenn die Antwort nicht positiv ist, wiederholt Anfrageoptimierer die Schritte der Anpassung der Anfrageparameter und des Sendens der Anfrage an das Ziel unter Verwendung des ausgewählten Proxys (d. h. die Schritte406 bis438 werden wiederholt). Diese Schritte des Überprüfens der Antwort des Ziels und des Wiederholens der Anfrage, wenn die Antwort negativ ist, können wiederholt werden, bis eine positive Antwort empfangen wird oder bis die Anzahl der negativen Antworten eine bestimmte angegebene Anzahl erreicht (z. B. kann der Anfrageoptimierer104 so konfiguriert werden, dass er die Parameter der Anfrage25 Mal oder öfter anpasst, und wenn innerhalb von 25 Mal die Antwort immer noch negativ ist, werden die negativen Ergebnisse an das Benutzergerät102 gesendet). - In einem weiteren Aspekt ermöglicht mindestens eine hierin beschriebene Ausführungsform des Anfrageoptimierer
104 die Aufrechterhaltung einer Sitzung für mehrere HTTP-Anfragen, was ein Merkmal von Datenabrufsystemen ist. Hier wird eine Sitzung unter Verwendung desselben Ausgangsknotens für mehrere HTTP-Anfragen implementiert. In einem beispielhaften Betrieb des Anfrageoptimierers104 beinhaltet eine Sitzung die Verwendung des gleichen IP-Proxys, der gleichen Header und der gleichen Cookies über die gesamte Sitzung. Der beispielhafte Betrieb ermöglicht auch das Senden von GET- und POST-Anfragen (d. h. das Empfangen und Senden von Daten) während derselben Sitzung. Der Anfrageoptimierer104 kann dieselbe Sitzung mit demselben Proxy108 für mehrere fortlaufende Anfragen im Kontext derselben Scraping-Sitzung offenhalten, die von einem einzigen Gerät des Benutzers kommen. Zunächst zeigt eine anfängliche Anfrage des Benutzers an, dass eine dauerhafte Sitzung für zukünftige Anfragen aufrechterhalten werden soll, indem eine Identifikationsmarkierung für die Sitzung im Format einer Zeichenkette erstellt wird, z. B. „1234567890abcdef“. Beim Empfang einer Anfrage mit der Sitzungsidentifikationsmarkierung wird der Anfrageoptimierer104 ausreichend informiert, um der Proxy-Verwaltungsplattform anzuweisen, die Sitzung als persistent für diesen bestimmten Proxy zu registrieren und diese Verbindung mit dem angegebenen Sitzungsidentifikationsmarker zu registrieren. Um denselben Proxy für die nächste Anfrage weiter zu verwenden, gibt der Benutzer die zuvor eingerichtete Sitzungskennung an, während er die Scraping-Anfrage absendet. Die Proxy-Verwaltung stellt denselben Proxy zur Verfügung und stellt die Verbindung zum Ziel über denselben Proxy erneut her. Es ist jedoch zu beachten, dass die Sitzungskennung eine Ablaufschwelle hat, die als überschritten gilt, wenn entweder a) eine vordefinierte Zeitspanne verstrichen ist oder b) die Anzahl der Anfragen, die die selbe Sitzung nutzen können, erschöpft wurde. Nach dem Ablauf führt die nächste Anfrage, die die abgelaufene Sitzungskennung enthält, dazu, dass eine neue dauerhafte Sitzung initiiert wird. - Das System erstellt eine Sitzung mit der angegebenen session_id, paart die Sitzung mit dem spezifischen IP-Proxy und den angegebenen HTTP-Headern und behält denselben Ausgangsknoten für die gesamte Sitzung bei. Außerdem werden die folgenden Parameter vom System für die Sitzung gesetzt: session_uuid, session_expires_at, session_remaining. Diese Parameter sind systematisch, d. h. ein Benutzer hat keine Kontrolle über sie. Eine Sitzung wird offengehalten, bis die Sitzungszeit abläuft oder ein Fehler auftritt.
-
5 zeigt ein beispielhaftes Ablaufdiagramm, das die Optimierung der Scraping-Anfrage beschreibt. Die Anfrage mit nicht optimierter Logik wird vom Anfrageoptimierer104 empfangen (Schritt502 ). Der Anfrageoptimierer104 wählt eine geeignete Scraping-Strategie entsprechend den Anforderungen und Zielen der Anfrage aus (Schritt504 ), wobei eine Vielzahl von Scraping-Strategien erstellt und im Anfrageoptimierer104 gespeichert wird. Jede solche Strategie oder eine Kombination davon kann vom Anfrageoptimierer104 zur Anpassung der Anfrage genutzt werden, um bessere Scraping-Ergebnisse zu erhalten. Ein Beispiel für eine solche Strategie kann die Einführung oder Anpassung von benutzerdefinierten Headern sein, die den geografischen Standort, die Zeitzone oder die in der Anfrage zu verwendende lokale Sprache identifizieren. Sobald die Anfrage angepasst ist, wird sie einer weiteren Verarbeitung unterzogen (Schritt506 ). - Jede der obigen Ausführungsformen hierin kann neu angeordnet und/oder mit anderen Ausführungsformen kombiniert werden. Dementsprechend sind die hierin enthaltenen Konzepte nicht auf eine bestimmte, hier offengelegte Ausführungsform beschränkt. Außerdem können die Ausführungsformen vollständig aus Hardware bestehen oder sowohl Hardware- als auch Software-Elemente umfassen. Teile der Ausführungsformen können in Software implementiert sein, was Firmware, residente Software, Mikrocode usw. einschließt, aber nicht darauf beschränkt ist.
6 veranschaulicht ein Computersystem600 , in dem ein computerlesbares Medium606 Anweisungen zur Durchführung eines der hierin offenbarten Verfahren bereitstellen kann. - Darüber hinaus können die Ausführungsformen die Form eines Computerprogrammprodukts annehmen, auf das von dem computerlesbaren Medium
606 zugegriffen werden kann, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen Befehlsausführungssystem bereitstellt. Für die Zwecke dieser Beschreibung kann das computerlesbare Medium606 jede Vorrichtung sein, die das Programm zur Verwendung durch oder in Verbindung mit dem Befehlsausführungssystem, der Vorrichtung oder dem Gerät, einschließlich des Computersystems600 , greifbar speichern kann. - Das Medium
606 kann ein beliebiges greifbares elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem (oder Gerät oder Vorrichtung) sein. Beispiele für ein computerlesbares Medium606 umfassen einen Halbleiter- oder Festkörperspeicher, ein Magnetband, eine austauschbare Computerdiskette, einen Direktzugriffsspeicher (RAM), einen NAND-Flash-Speicher, einen Festwertspeicher (ROM), eine starre Magnetplatte und eine optische Platte. Einige Beispiele für optische Platten sind Compact Disk - Nur-Lese-Speicher (CD-ROM), Compact Disk - Lesen/Schreiben (CD-R/W) und Digital Versatile Disc (DVD). - Das Computersystem
600 , das zum Speichern und/oder Ausführen von Programmcode geeignet ist, kann einen oder mehrere Prozessoren602 umfassen, die direkt oder indirekt über einen Systembus610 mit dem Speicher608 gekoppelt sind. Der Speicher608 kann einen lokalen Speicher umfassen, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Speicher, die eine temporäre Speicherung von zumindest einem Teil des Programmcodes bereitstellen, um die Anzahl der Abrufe von Code aus dem Massenspeicher während der Ausführung zu reduzieren. Eingabe-/Ausgabe- oder E/A-Geräte 604 (einschließlich, aber nicht beschränkt auf Tastaturen, Displays, Zeigegeräte usw.) können entweder direkt oder über zwischengeschaltete E/A-Geräte mit dem System gekoppelt werden. Netzwerkadapter können auch an das System gekoppelt werden, damit das Computersystem600 mit anderen Datenverarbeitungssystemen verbunden werden kann, z. B. über Host-System-Schnittstellen612 oder entfernte Drucker oder Speichergeräte über dazwischenliegende private oder öffentliche Netzwerke. Modems, Kabelmodems und Ethernet-Karten sind nur einige der derzeit verfügbaren Arten von Netzwerkadaptern. - Obwohl mehrere Ausführungsformen beschrieben wurden, wird ein Fachmann erkennen, dass verschiedene Modifikationen und Änderungen vorgenommen werden können, ohne vom Umfang der hier beschriebenen Ausführungsformen abzuweichen. Dementsprechend sind die Beschreibung und die Figuren eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen, und alle derartigen Modifikationen sollen in den Anwendungsbereich der vorliegenden Lehre einbezogen werden. Der Nutzen, die Vorteile, die Problemlösungen und jedes Element, das dazu führen kann, dass ein Nutzen, ein Vorteil oder eine Lösung auftritt oder ausgeprägter wird, sind nicht als kritische, erforderliche oder wesentliche Merkmale oder Elemente eines oder aller Ansprüche zu verstehen. Die Erfindung wird ausschließlich durch die beigefügten Ansprüche definiert, einschließlich aller Änderungen, die während der Anhängigkeit dieser Anmeldung vorgenommen wurden, und aller Äquivalente dieser Ansprüche in der erteilten Fassung.
- Die Offenlegung stellt ein System und ein nicht-flüchtiges computerlesbares Speichermedium zum Extrahieren und Sammeln von Daten von einem Webserver vor, das Folgendes umfasst bzw. Anweisungen umfasst, die wenn sie von einer Rechenvorrichtung innerhalb einer Dienstanbieter-Infrastruktur ausgeführt werden, die Rechenvorrichtung dazu veranlassen, die folgenden Schritte durchzuführen: Vergleichen von Parametern einer von einem Benutzergerät empfangenen Anfrage mit einer Liste von Scraping-Strategien; Auswählen einer Scraping-Strategie aus der Liste von Scraping-Strategien, die zu den Parametern der Anfrage korrespondiert; Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie; Anpassen der Parameter der Anfrage entsprechend der Scraping-Strategie zum Bilden einer angepassten Anfrage; Senden der angepassten Anfrage an ein Ziel durch einen Proxy, der entsprechend der Scraping-Strategie ausgewählt wurde; Empfangen einer Antwort von dem Ziel.
- Nach Erhalt der Anfrage führt eine Dienstanbieter-Infrastruktur die Anpassung der Parameter der Anfrage vom Gerät des Benutzers autonom aus.
- Das Verfahren umfasst ferner das Prüfen und Analysieren der vom Ziel empfangenen Metadaten der Antwort und das Weiterleiten der Antwort an das Gerät des Benutzers gemäß der Analyse der Metadaten.
- Wenn die vom Ziel empfangene Antwort negativ ist, wird das Verfahren wiederholt, indem die Parameter der Anfrage gemäß einer anderen Scraping-Strategie aus der Liste der Scraping-Strategien angepasst werden, um eine andere angepasste Anfrage zu bilden, die dann an das Ziel gesendet wird. Das Verfahren wird mit alternativen Scraping-Strategien wiederholt, die aus der Liste der Scraping-Strategien ausgewählt wurden, bis eine positive Antwort erhalten wird oder bis eine maximale Anzahl von Versuchen erreicht ist.
- Bei den Anpassungen wird mindestens einer der Parameter innerhalb der folgenden Komponenten der Anfrage angepasst: URL-Adresse; Header; Cookies; Anfragehauptteil. Die Parameter der Anfrage werden nicht angepasst, wenn die vom Gerät des Benutzers empfangene Anfrage mit einer der Scraping-Strategien aus der Liste korrespondiert.
- Der Proxy wird von einer Dienstanbieter-Infrastruktur aus einer Proxy-Datenbank ausgewählt. Der Proxy wird entsprechend der Scraping-Strategie ausgewählt und umfasst Einstellungen zum geografischen Standort, Proxy-Typ, Proxy-Verfügbarkeit oder eine beliebige Kombination davon. Der Proxy kann für Anfragen mehrerer Benutzergeräte verfügbar bleiben.
- Das Verfahren verwendet den Anfrageoptimierer und seine Betriebseinstellungen umfassen mindestens eine der folgenden: Scraping-Strategien, Sitzungs-ID-Nummern, als Anfragesteller akzeptierte Server, Zeitfenster für den Betrieb, geplante Wartungsaufgaben, Zeitüberschreitungen von Verbindungssitzungen, Anfrageverarbeitungsprotokolle oder eine beliebige Kombination davon, und solche Einstellungen werden in einer Datenbank auf der Festplatte, einer Flat-File auf einer Festplatte, in einer Datenbank im Speicher oder in anderen Speichermedien gespeichert.
- Das Ziel, das vom Proxy-Server erreicht wird, ist ein Webserver, der die über HTTP/HTTPS-Protokolle zugängliche Antwort bereitstellt und an ein Netzwerk angeschlossen ist. Das Verfahren kann einen Proxy-Server verwenden, der in eine Dienstanbieter-Infrastruktur integriert ist oder von einer Dienstanbieter-Infrastruktur getrennt ist.
- Die Ausführungsformen offenbaren das System zur Extraktion und zum Sammeln von Daten aus einem Netzwerk, das mindestens umfasst einen Proxy-Rotator, der betreibbar ist, um eine Vielzahl von Proxys über das Netzwerk bereitzustellen und einen Anfrageoptimierer, der betreibbar ist, um Parameter einer von einem Benutzergerät empfangenen Anfrage mit einer Liste von Scraping-Strategien zu vergleichen, zum Auswählen einer Scraping-Strategie, die mit den Parametern der Anfrage korrespondiert, aus der Liste von Scraping-Strategien, zum Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie, zum Anpassen der Parameter der Anfrage gemäß der Scraping-Strategie zum Bilden einer angepassten Anfrage, und zum Senden der angepassten Anfrage über einen Proxy, der durch den Proxy-Rotator gemäß der Scraping-Strategie aus einer Proxy-Datenbank ausgewählt wird, an ein Ziel.
- Die Offenbarungen stellen auch ein nicht-flüchtiges computerlesbares Medium zum Extrahieren von Sammeln von einem Web-Server vor, das Anweisungen umfasst, die, wenn sie von einer Rechenvorrichtung innerhalb einer Dienstanbieter-Infrastruktur ausgeführt werden, die Rechenvorrichtung veranlassen zum: Vergleichen von Parametern einer von einem Gerät des Benutzers empfangenen Anfrage mit einer Liste von Scraping-Strategien; Auswählen einer Scraping-Strategie, die den Parametern der Anfrage entspricht, aus der Liste von Scraping-Strategien; Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie; Anpassen der Parameter der Anfrage gemäß der Scraping-Strategie zum Bilden einer angepassten Anfrage; Senden der angepassten Anfrage an ein Ziel über einen Proxy, der gemäß der Scraping-Strategie ausgewählt wurde; Empfangen einer Antwort von dem Ziel. Später, Prüfen und Analysieren der Metadaten der vom Ziel empfangenen Antwort und Weiterleiten der Antwort an das Gerät des Benutzers gemäß der Analyse der Metadaten. Wenn die vom Ziel empfangene Antwort negativ ist, wird der Betrieb des Mediums wiederholt, indem die Parameter der Anfrage gemäß einer anderen Scraping-Strategie aus der Liste der Scraping-Strategien angepasst werden zum Bilden einer anderen angepassten Anfrage, die dann an das Ziel gesendet wird. Der Betrieb des Mediums wird mit alternativen Scraping-Strategien aus der Liste der Scraping-Strategien wiederholt, bis eine positive Antwort erhalten wird oder bis eine maximale Anzahl von Versuchen erreicht ist. Der Proxy kann für Anfragen von mehreren Benutzergeräten verfügbar bleiben. Mindestens einer der folgenden Parameter der Anfrage wird angepasst: URL-Adresse; Header; Cookies; Anfragehauptteil. Die Parameter der Anfrage werden nicht angepasst, wenn die vom Gerät des Benutzers empfangene Anfrage mit einer der Scraping-Strategien aus der Liste korrespondiert.
- Darüber hinaus können in diesem Dokument Bezugsbegriffe wie „erster“ und „zweiter“ und dergleichen verwendet werden, um lediglich eine Einheit oder Aktion von einer anderen Einheit oder Aktion zu unterscheiden, ohne notwendigerweise eine tatsächliche derartige Beziehung oder Reihenfolge zwischen diesen Einheiten oder Aktionen zu erfordern oder zu implizieren. Die Begriffe „umfasst“, „hat“, „beinhaltet“, „enthält“ oder jede andere Abwandlung davon sollen eine nicht-exklusive Einbeziehung abdecken, so dass ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, der/die eine Liste von Elementen umfasst, hat, beinhaltet, enthält, nicht nur diese Elemente einschließt, sondern auch andere Elemente einschließen kann, die nicht ausdrücklich aufgeführt sind oder zu einem solchen Prozess, Verfahren, Artikel oder einer solchen Vorrichtung gehören. Ein Element, dem „umfasst ... ein“, „hat ... ein“, „beinhaltet ... ein“, „enthält ... ein“ vorangestellt ist, schließt ohne zusätzliche Einschränkungen die Existenz weiterer identischer Elemente in dem Prozess, Verfahren, Artikel und/oder Gerät, das das Element umfasst, hat, umfasst und/oder enthält, nicht aus. Der Begriff „ein“ ist als ein oder mehrere definiert, sofern hier nicht ausdrücklich anders angegeben. Die Begriffe „annähernd“, „ungefähr“ oder eine andere Version davon sind definiert als „nahegelegen“, wie es von einem Fachmann verstanden wird. Ein Gerät oder eine Struktur, die auf eine bestimmte Art und Weise „konfiguriert“ ist, ist mindestens auf diese Art und Weise konfiguriert, kann aber auch auf eine Weise konfiguriert sein, die nicht aufgeführt ist. Für die Angabe von Elementen kann eine Singular- oder Pluralform verwendet werden, was jedoch den Umfang der Offenbarung nicht einschränkt, und dieselbe Lehre kann für mehrere Objekte gelten, auch wenn in der vorliegenden Anwendung auf ein Objekt in seiner Singularform Bezug genommen wird.
- Es wird gewürdigt, dass einige Ausführungsformen die Verwendung einer oder mehrerer generischer oder spezialisierter Datenbanken (wie z. B. „Proxy-Datenbank“ oder ähnlich) beschreiben, die eine Sammlung von Informationen enthält, die so organisiert ist, dass sie leicht zugänglich, verwaltet und aktualisiert werden kann. Computerdatenbanken enthalten typischerweise Aggregationen von Datensätzen oder Dateien, im vorliegenden Fall speichern Datenbanken üblicherweise verschiedene Informationen und Statistiken über die Proxys oder Ausgangsknoten, Informationen über die Auslastungsschwelle des Ausgangsknoten-Anbieters. Solche Datenbanken können auch Informationen über die Clients, die durchgeführten Anfragen, die verwendeten Netzwerke, die verwendeten Proxys, die Arten der angeforderten Proxys und ähnliche Daten enthalten. Datenbanken sind so strukturiert, dass sie das Speichern, Abrufen, Ändern und Löschen von Daten in Verbindung mit verschiedenen Datenverarbeitungsvorgängen ermöglichen.
- Die hierin detailliert beschriebenen Ausführungsformen werden bereitgestellt, damit der Leser die Art der technischen Offenbarung schnell erfassen kann. Sie wird mit der Maßgabe vorgelegt, dass sie nicht zur Auslegung oder Einschränkung des Umfangs oder der Bedeutung der Ansprüche verwendet wird. Darüber hinaus wird in der vorstehenden detaillierten Beschreibung gezeigt, dass mehrere Merkmale in verschiedenen Ausführungsformen zum Zweck der Straffung der Offenbarung zusammengefasst sind. Diese Art der Offenlegung ist nicht so zu interpretieren, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als in den einzelnen Ansprüchen ausdrücklich aufgeführt sind. Vielmehr liegt der Erfindungsgegenstand, wie die folgenden Ansprüche zeigen, in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Daher werden die folgenden Ansprüche hiermit in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als separat beanspruchter Gegenstand steht.
Claims (26)
- System zum Extrahieren und Sammeln von Daten von einem Webserver, umfassend einen Anfrageoptimierer (104), der konfiguriert ist zum Vergleichen von Parametern einer von einem Benutzergerät (102) empfangenen Anfrage mit einer Liste von Scraping-Strategien; Auswählen einer Scraping-Strategie aus der Liste von Scraping-Strategien, die zu den Parametern der Anfrage korrespondiert Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie; Anpassen der Parameter der Anfrage entsprechend der Scraping-Strategie zum Bilden einer angepasste Anfrage; Senden der angepassten Anfrage an ein Ziel (116, 118) durch einen Proxy (108, 110), der entsprechend der Scraping-Strategie ausgewählt wurde; Empfangen einer Antwort von dem Ziel (116, 118).
- System nach
Anspruch 1 , wobei der Anfrageoptimierer (104) ferner konfiguriert ist zum Prüfen und Analysieren der Metadaten der von dem Ziel (116, 118) empfangenen Antwort. - System nach
Anspruch 2 , wobei der Anfrageoptimierer (104) ferner konfiguriert zum Weiterleiten der Antwort an das Benutzergerät (102) gemäß der Analyse der Metadaten. - System nach
Anspruch 1 , wobei, wenn die von dem Ziel (116, 118) empfangene Antwort negativ ist, der Anfrageoptimierer (104) konfiguriert ist zum Wiederholen der Anpassung der Parameter der Anfrage gemäß einer anderen Scraping-Strategie aus der Liste der Scraping-Strategien zum Bilden einer anderen angepassten Anfrage, die dann an das Ziel (116, 118) gesendet wird. - System nach
Anspruch 4 , wobei der Anfrageoptimierer (104) konfiguriert ist zum Wiederholen des Anpassens der Parameter mit alternativen Scraping-Strategien, die aus der Liste der Scraping-Strategien ausgewählt sind, bis eine positive Antwort erhalten wird oder bis eine maximale Anzahl von Versuchen erreicht ist. - System nach
Anspruch 1 , wobei der Anfrageoptimierer (104) konfiguriert ist zum Anpassen mindestens einer der Parameter innerhalb der folgenden Komponenten der Anfrage: a. URL-Adresse; b. Kopfzeilen; c. Cookies; d. Anfragehauptteil. - System nach
Anspruch 1 , wobei eine Dienstanbieter-Infrastruktur (114) konfiguriert ist zum Auswählen des Proxys (108, 110) aus einer Proxy-Datenbank (112). - System nach
Anspruch 7 , wobei die Dienstanbieter-Infrastruktur (114) konfiguriert ist zum Auswählen des Proxys gemäß der Scraping-Strategie auswählt und Geolokalisierungseinstellungen, Proxy-Typ, Proxy-Verfügbarkeit oder eine beliebige Kombination davon umfasst. - System nach
Anspruch 1 , wobei der Proxy (108, 110) so konfiguriert ist, dass er für mehrere Anfragen von Benutzergeräten verfügbar bleibt. - System nach
Anspruch 1 , wobei der Anfrageoptimierer (104) so konfiguriert ist, dass er die Parameter der Anfrage nicht anpasst, wenn die von dem Benutzergerät (102) empfangene Anfrage mit einer der Scraping-Strategien aus der Liste korrespondiert. - System nach
Anspruch 1 , wobei der Anfrageoptimierer (104) Betriebseinstellungen umfasst, die mindestens eines der folgenden umfassen: Scraping-Strategien, Sitzungs-ID-Nummern, als Anfragesteller akzeptierte Server, Zeitfenster für den Betrieb, geplante Wartungsaufgaben, Zeitüberschreitungen von Verbindungssitzungen, Anfrageverarbeitungsprotokolle oder eine beliebige Kombination davon, und solche Einstellungen in einer Datenbank auf einer Festplatte, in einer Flat-File auf einer Festplatte, in einer Datenbank in einem Speicher oder in anderen Speichermedien gespeichert sind. - System nach
Anspruch 1 , wobei das Ziel (116, 118) ein Webserver ist, der die Antwort liefert, auf die über HTTP/HTTPS-Protokolle zugegriffen werden kann, und an ein Netzwerk (120) angeschlossen ist. - System nach
Anspruch 1 , wobei der Proxy (108, 110) ein Proxy-Server ist, der in eine Dienstanbieter-Infrastruktur (114) integriert ist. - System nach
Anspruch 1 , wobei der Proxy (108, 110) ein von einer Dienstanbieter-Infrastruktur (114) getrennter Proxy-Server ist. - System nach
Anspruch 1 , wobei die Dienstanbieter-Infrastruktur (114) so konfiguriert ist, dass sie das Anpassen der Parameter der Anfrage autonom von dem Benutzergerät (102) durchführt. - System zum Extrahieren und Sammeln von Daten aus einem Netzwerk, mindestens umfassend: einen Proxy-Rotator (106), der so konfiguriert ist, dass er eine Vielzahl von Proxys (108, 110) über das Netzwerk bereitstellt; und einen Anfrageoptimierer (104), der konfiguriert ist zum Vergleichen der Parameter einer von einem Benutzergerät (102) empfangenen Anfrage mit einer Liste von Scraping-Strategien, zum Auswählen einer Scraping-Strategie, die mit den Parametern der Anfrage korrespondiert, aus der Liste von Scraping-Strategien, zum Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie, zum Anpassen der Parameter der Anfrage gemäß der Scraping-Strategie zum Bilden einer angepassten Anfrage, und zum Senden der angepassten Anfrage über einen Proxy, der durch den Proxy-Rotator (106) gemäß der Scraping-Strategie aus einer Proxy-Datenbank (112) ausgewählt wird, an ein Ziel.
- System nach
Anspruch 16 , wobei der Anfrageoptimierer (104) konfiguriert ist zum Anpassen der von dem Benutzergerät (102) empfangenen Anfrage anpasst, indem er mindestens einen der Parameter innerhalb der folgenden Komponenten modifiziert: a. URL-Adresse; b. Kopfzeilen; c. Cookies; d. Anfragehauptteil. - System nach
Anspruch 16 , wobei der Anfrageoptimierer (104) so konfiguriert ist, dass er denselben Proxy (108, 110) für eine unbegrenzte Anzahl von Anfragen verwendet, die von demselben Benutzergerät (102) empfangen werden. - Nicht-flüchtiges computerlesbares Medium zum Extrahieren und Sammeln von Daten von einem Web-Server umfassend Anweisungen, die, wenn sie von einer Rechenvorrichtung innerhalb einer Dienstanbieter-Infrastruktur ausgeführt werden, die Rechenvorrichtung dazu veranlassen, die folgenden Schritte durchzuführen: Vergleichen von Parametern einer von einem Benutzergerät (102) empfangenen Anfrage mit einer Liste von Scraping-Strategien; Auswählen einer Scraping-Strategie, die mit den Parametern der Anfrage korrespondiert, aus der Liste von Scraping-Strategien; Identifizieren von Diskrepanzen zwischen der Anfrage und der Scraping-Strategie; Anpassen der Parameter der Anfrage entsprechend der Scraping-Strategie zum Bilden einer angepassten Anfrage; Senden der angepassten Anfrage an ein Ziel (116, 118) durch einen Proxy (108, 110), der entsprechend der Scraping-Strategie ausgewählt wurde; Empfangen einer Antwort von dem Ziel (116, 118).
- Nicht-flüchtiges computerlesbares Medium nach
Anspruch 19 , ferner umfassend einen Schritt zum: Prüfen und Analysieren der Metadaten der von dem Ziel (116, 118) empfangenen Antwort. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 20 , das weiterhin einen Schritt umfasst zum: Weiterleiten der Antwort an das Benutzergerät (102) gemäß der Analyse der Metadaten. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 19 , wobei, wenn die von dem Ziel (116, 118) empfangene Antwort negativ ist, der Betrieb des Mediums wiederholt wird, indem die Parameter der Anfrage gemäß einer anderen Scraping-Strategie aus der Liste der Scraping-Strategien angepasst werden zum Bilden einer anderen angepassten Anfrage, die dann an das Ziel (116, 118) gesendet wird. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 22 , wobei die Operation des Mediums mit alternativen Scraping-Strategien, die aus der Liste der Scraping-Strategien ausgewählt werden, wiederholt wird, bis eine positive Antwort erhalten wird oder bis eine maximale Anzahl von Versuchen erreicht ist. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 19 , wobei der Proxy (108, 11) für mehrere Anfragen von Benutzergeräten verfügbar bleibt. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 19 , wobei mindestens einer der folgenden Parameter der Anfrage angepasst wird: a. URL-Adresse; b. Header; c. Cookies d. Anfragehauptteil. - Nicht-flüchtiges computerlesbares Medium nach
Anspruch 19 , wobei die Parameter der Anfrage nicht angepasst werden, wenn die von dem Benutzergerät (102) empfangene Anfrage mit einer der Scraping-Strategien aus der Liste korrespondiert.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/018,333 US10965770B1 (en) | 2020-09-11 | 2020-09-11 | Dynamic optimization of request parameters for proxy server |
US17/018,333 | 2020-09-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE202021103600U1 true DE202021103600U1 (de) | 2021-08-20 |
Family
ID=75164571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202021103600.1U Active DE202021103600U1 (de) | 2020-09-11 | 2021-04-07 | Dynamische Optimierung von Anfrageparametern für Proxy-Server |
Country Status (7)
Country | Link |
---|---|
US (4) | US10965770B1 (de) |
EP (1) | EP3994870A1 (de) |
CN (1) | CN116097620A (de) |
CA (1) | CA3190449A1 (de) |
DE (1) | DE202021103600U1 (de) |
IL (1) | IL300779A (de) |
WO (1) | WO2022053880A1 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
LT3770773T (lt) | 2017-08-28 | 2024-03-12 | Bright Data Ltd. | Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius |
EP4027618A1 (de) | 2019-04-02 | 2022-07-13 | Bright Data Ltd. | Verwaltung eines indirekten url-abrufdienstes |
US11615157B2 (en) | 2020-09-29 | 2023-03-28 | Oxylabs, Uab | Optimizing scraping requests through browsing profiles |
US11212354B1 (en) * | 2021-03-19 | 2021-12-28 | Teso LT, UAB | Methods and systems for implementing a regionally contiguous proxy service |
US11757929B2 (en) * | 2021-05-27 | 2023-09-12 | Pantheon Systems, Inc. | Traffic-shaping HTTP proxy for denial-of-service protection |
CN113489705B (zh) * | 2021-06-30 | 2023-03-24 | 中国银联股份有限公司 | 一种抓取应用程序http通讯数据的方法、装置存储介质 |
WO2023280593A1 (en) * | 2021-07-08 | 2023-01-12 | metacluster lt, UAB | Web scraping through use of proxies, and applications thereof |
EP4222617A1 (de) * | 2021-07-08 | 2023-08-09 | oxylabs, UAB | Bahnabkratzen durch verwendung von proxies und anwendungen davon |
US11416291B1 (en) * | 2021-07-08 | 2022-08-16 | metacluster lt, UAB | Database server management for proxy scraping jobs |
WO2023025552A1 (en) * | 2021-08-24 | 2023-03-02 | Oxylabs, Uab | Adaptive data collection optimization |
US11314833B1 (en) | 2021-08-24 | 2022-04-26 | metacluster lt, UAB | Adaptive data collection optimization |
CN114285899A (zh) * | 2021-11-30 | 2022-04-05 | 同程网络科技股份有限公司 | 一种流量代理方法、系统、智能终端及存储介质 |
US11601518B1 (en) * | 2022-02-09 | 2023-03-07 | Coretech LT, UAB | Managed exit nodes and third party proxies |
US11652890B1 (en) | 2022-07-13 | 2023-05-16 | Oxylabs, Uab | Methods and systems to maintain multiple persistent channels between proxy servers |
CN115658663A (zh) * | 2022-12-27 | 2023-01-31 | 金篆信科有限责任公司 | 分布式数据库的参数调整方法、装置及电子设备 |
CN116431741B (zh) * | 2023-06-08 | 2023-08-29 | 成都房联云码科技有限公司 | 一种基于http协议控制关系型数据库事务代理工具及方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466970B1 (en) | 1999-01-27 | 2002-10-15 | International Business Machines Corporation | System and method for collecting and analyzing information about content requested in a network (World Wide Web) environment |
US20050125412A1 (en) * | 2003-12-09 | 2005-06-09 | Nec Laboratories America, Inc. | Web crawling |
US8590032B2 (en) | 2003-12-10 | 2013-11-19 | Aventail Llc | Rule-based routing to resources through a network |
US9207953B1 (en) | 2004-04-28 | 2015-12-08 | F5 Networks, Inc. | Method and apparatus for managing a proxy autoconfiguration in SSL VPN |
US8561155B2 (en) | 2006-08-03 | 2013-10-15 | Citrix Systems, Inc. | Systems and methods for using a client agent to manage HTTP authentication cookies |
US20080162448A1 (en) * | 2006-12-28 | 2008-07-03 | International Business Machines Corporation | Method for tracking syntactic properties of a url |
US7908234B2 (en) * | 2008-02-15 | 2011-03-15 | Yahoo! Inc. | Systems and methods of predicting resource usefulness using universal resource locators including counting the number of times URL features occur in training data |
US20120143844A1 (en) * | 2010-12-02 | 2012-06-07 | Microsoft Corporation | Multi-level coverage for crawling selection |
US9077688B2 (en) * | 2012-06-17 | 2015-07-07 | Skycure Ltd | Access control system for a mobile device |
US10177967B2 (en) | 2013-03-15 | 2019-01-08 | Jesse Lakes | Redirection service resource locator mechanism |
US9390269B2 (en) * | 2013-09-30 | 2016-07-12 | Globalfoundries Inc. | Security testing using semantic modeling |
US10594820B2 (en) | 2014-11-24 | 2020-03-17 | Google Llc | Conditionally joining data from cookies |
US10262066B2 (en) * | 2014-12-24 | 2019-04-16 | Samsung Electronics Co., Ltd. | Crowd-sourced native application crawling |
WO2018035163A1 (en) * | 2016-08-15 | 2018-02-22 | RiskIQ, Inc. | Techniques for determining threat intelligence for network infrastructure analysis |
LT3780547T (lt) | 2019-02-25 | 2023-03-10 | Bright Data Ltd. | Turinio parsisiuntimo, naudojant url bandymų mechanizmą, sistema ir būdas |
US10637956B1 (en) * | 2019-10-01 | 2020-04-28 | Metacluster It, Uab | Smart proxy rotator |
-
2020
- 2020-09-11 US US17/018,333 patent/US10965770B1/en active Active
-
2021
- 2021-02-25 US US17/185,756 patent/US11140235B1/en active Active
- 2021-04-07 CA CA3190449A patent/CA3190449A1/en active Pending
- 2021-04-07 CN CN202180062220.5A patent/CN116097620A/zh active Pending
- 2021-04-07 IL IL300779A patent/IL300779A/en unknown
- 2021-04-07 DE DE202021103600.1U patent/DE202021103600U1/de active Active
- 2021-04-07 EP EP21719719.3A patent/EP3994870A1/de active Pending
- 2021-04-07 WO PCT/IB2021/052866 patent/WO2022053880A1/en unknown
- 2021-06-30 US US17/305,123 patent/US11343342B2/en active Active
-
2022
- 2022-04-22 US US17/660,344 patent/US11470174B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11470174B2 (en) | 2022-10-11 |
US11140235B1 (en) | 2021-10-05 |
EP3994870A1 (de) | 2022-05-11 |
US10965770B1 (en) | 2021-03-30 |
US20220247829A1 (en) | 2022-08-04 |
US11343342B2 (en) | 2022-05-24 |
WO2022053880A1 (en) | 2022-03-17 |
US20220086248A1 (en) | 2022-03-17 |
CA3190449A1 (en) | 2022-03-17 |
IL300779A (en) | 2023-04-01 |
CN116097620A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE202021103600U1 (de) | Dynamische Optimierung von Anfrageparametern für Proxy-Server | |
DE60033615T2 (de) | Verfahren und System, um das Verteilen von IP-Datagrammen auf mehrere Server gemäß einer definierten Strategie zu erzwingen | |
DE69929268T2 (de) | Verfahren und System zur Überwachung und Steuerung der Netzzugriffe | |
DE69921455T2 (de) | System und verfahren zur zugriffssteuerung auf gespeicherte dokumente | |
DE602005002679T2 (de) | WEB-Dienst-Anwendungsprotokoll und SOAP-Verarbeitungsmodell | |
EP1930818B1 (de) | Verfahren zum Vorabübertragen strukturierter Datenmengen zwischen einer Clienteinrichtung und einer Servereinrichtung | |
DE60130543T2 (de) | Gesichertes netzwerkbetriebsmittelzugriffssystem | |
EP1538804B1 (de) | Verfahren zum Verringern des Transportvolumens von Daten in Datennetzen | |
DE60222871T2 (de) | Anordnung und Verfahren zum Schutz von Endbenutzerdaten | |
DE602004001716T2 (de) | Verfahren und System zur Verbindung eines Fernbenutzers mit einer lokalen Rechnerumgebung über einen Intranet-Server | |
DE60317925T2 (de) | Steuerung von netzwerkverkehr in einer peer-to-peer umgebung | |
DE202021103602U1 (de) | Benchmark-Funktion für Ausgangsknoten | |
DE10116640B4 (de) | Auf URL beruhende Token für schwierige Verteilungen, die einen serverseitigen Cookiebehälter benutzen | |
DE602004011689T2 (de) | Verfahren und System zur Handhabung der Übermittlung von Inhalten in Kommunikationsnetzen | |
DE60019756T2 (de) | Verfahren der zugriffskontrolle auf betriebsmittel hinter einer sicherheitsbarriere | |
DE202016008885U1 (de) | Regelbasierte Erkennung von Netzwerkbedrohungen für verschlüsselte Kommunikationen | |
DE202016009028U1 (de) | Regelbasierte Netzwerkbedrohungsdetektion | |
EP3314806B1 (de) | Verschlüsselungsfilter | |
DE202014010945U1 (de) | Systeme zur Bereitstellung von Meldungen von Änderungen in einem Cloud-basierten Dateisystem | |
DE202021103381U1 (de) | Computerlesbares Medium und Systeme zur Implementierung eines regional zusammenhängenden Proxy-Dienstes | |
DE202011110893U1 (de) | Verwaltung mehrfacher Anmeldungen über einen Einzelbrowser | |
DE10297998B4 (de) | Erstellen verteilter Proxy-Konfigurationen | |
DE60029332T2 (de) | Verfahren zum schieben von information zwischen einem wirtrechnersystem und einem mobilen datenkommunikationsgerät | |
DE202013007090U1 (de) | Serverbasiertes Bezahlsystem | |
DE102007026870A1 (de) | Ressourcenzugriff unter Vermittlung durch ein Sicherheitsmodul |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R207 | Utility model specification | ||
R081 | Change of applicant/patentee |
Owner name: OXYLABS, UAB, LT Free format text: FORMER OWNER: METACLUSTER LT, UAB, VILNIUS, LT |