API-Methoden
ping
Überprüfung des Servers und der API.
Beispielanfrage
{
"password": "pass",
"action": "ping"
}
Beispielantwort
{
"success": 1,
"data": "pong"
}
oneRequest
Einzelne Anfrage zur Datenerfassung, es kann jeder Parser und jedes Preset verwendet werden. Als Ergebnis wird eine Zeichenfolge gemäß dem im Preset festgelegten Ergebnisformat sowie ein vollständiges Log der Arbeit des Parsers generiert.
Beispielanfrage
{
"password": "pass",
"action": "oneRequest",
"data": {
"query": "test",
"parser": "SE::Google",
"configPreset": "default",
"preset": "Pages Count use Proxy"
}
}
Beschreibung der möglichen Parameter:
parser- welcher Parser die Anfrage ausführen sollpreset- welches Preset verwendet werden sollconfigPreset- welche Thread-Konfiguration verwendet werden sollquery- die eigentliche AbfragerawResults- optionaler Parameter; wenn gesetzt, wird anstelle der Ergebniszeichenfolge resultString ein Array results mit allen Ergebnissen zurückgegeben, die der angegebene Parser unterstütztneedData- optionaler Parameter, der angibt, ob data und pages in der Antwort übertragen werden sollen; wird zur Speichereinsparung verwendet, standardmäßig deaktiviertdoLog- optionaler Parameter, der angibt, ob das Arbeitsprotokoll zusammen mit den Ergebnissen zurückgegeben werden soll, standardmäßig aktiviertoptions- Array mit zusätzlichen Optionen, die auf den Parser angewendet werden, z. B. - override - ermöglicht das Überschreiben von Werten im Preset
Beispielantwort
{
"success": 1,
"data": {
"resultString": "test: 6070000000\n",
"logs": [
[
0,
1614933603,
"Parser SE::Google::0 parse query test"
],
[
0,
1614933603,
"Parse page 1"
],
...
[
0,
1614933604,
"Thread complete work"
]
]
}
}
Beschreibung der Variablen in der Antwort:
resultString- Ergebniszeichenfolgelogs- Array mit den Logs der Anfrageausführung
Überschreiben von Parser-Parametern
In options können beliebige Parameter des verwendeten Parsers überschrieben werden; diese werden über die im Einstellungs-Preset angegebenen Werte angewendet.
Beispielanfrage:
{
"password": "pass",
"action": "oneRequest",
"data": {
"parser": "SE::Google",
"preset": "default",
"query": "test",
"rawResults": 1,
"doLog": 0,
"options": [
{
"value": 1,
"type": "override",
"id": "pagecount"
},
{
"value": 10,
"type": "override",
"id": "linksperpage"
},
{
"type": "override",
"id": "useproxy",
"value": false
}
]
}
}
Antwort:
{
"success": 1,
"data": {
"logs": [],
"results": [
{
"ads": [],
"success": 1,
"info": {
"success": 1,
"retries": 0,
"stats": {
"success": 1,
"retries": 0,
"proxiesUsed": 0,
"requests": 0,
"queries": 1
}
},
"query": {
"first": "test",
"threadId": "0",
"lvl": 0,
"query": "test",
"queryUid": "0",
"orig": "test",
"prefered_proxy": null
},
"totalcount": "6130000000",
"serp": [
"https://www.test.de/",
"Stiftung Warentest",
"Sichern Sie sich mit der <em>test</em>.de-Flatrate freien Zugriff auf alle <em>Tests</em> und Produktfinder. Mehr erfahren: <em>test</em>.de-Flatrates. <em>Test</em> CO2 ...",
0,
...
],
"related": [
"test <b>speed</b>",
...
],
"detected_geo": "Germany",
"rich": [
"Featured snippet"
],
"misspell": 0,
"resultsCount": 11
}
]
}
}
bulkRequest
Massenanfrage zur Datenerfassung, es kann jeder Parser und jedes Preset verwendet werden, zudem kann die Anzahl der Threads für die Datenerfassung angegeben werden. Als Ergebnis wird eine Zeichenfolge gemäß dem im Preset festgelegten Ergebnisformat sowie ein vollständiges Log der Arbeit des Parsers für jeden Thread generiert.
Beispielanfrage
{
"password": "pass",
"action": "bulkRequest",
"data": {
"parser": "SE::Google",
"preset": "Pages Count no Proxy",
"configPreset": "default",
"threads": 3,
"rawResults": 1,
"queries": [
"test1",
"test2",
"test3",
"test4",
"test5"
]
}
}
Beschreibung der möglichen Variablen in data:
threads- Anzahl der Threads für die Datenerfassungqueries- Array von Abfragen. Die übrigen Variablen sind völlig analog zu oneRequest, mit Ausnahme vonquery
Beispielantwort
{
"success": 1,
"data": {
"logs": {
"0": {
"1": [
[
4,
1614935687,
"SE::Google::0",
"test1"
],
...
[
0,
1614935688,
"Thread complete work"
]
]
},
...Log für die übrigen Threads...
},
"results": [
{
"ads": [],
"success": 1,
"info": {
"success": 1,
"retries": 0,
"stats": {
"success": 1,
"retries": 0,
"proxiesUsed": 0,
"requests": 0,
"queries": 1
}
},
"query": {
"first": "test1",
"threadId": "0",
"lvl": 0,
"query": "test1",
"queryUid": "0",
"orig": "test1",
"prefered_proxy": null
},
"totalcount": "35800000",
"serp": [
"https://www.test1solutions.com/",
"FoamFlex200 | Oil Spill Absorbent | Oil Disaster solution",
"<em>TEST1</em> IS SOLUTION. In addition to the different models ...",
0,
...
],
"related": [
"<b>test2</b>",
...
],
"detected_geo": "Germany",
"rich": [
"Featured snippet",
"People also ask"
],
"misspell": 0,
"resultsCount": 12
},
...Ergebnisse für die übrigen Abfragen...
]
}
}
addTask
Hinzufügen einer Aufgabe zur Warteschlange, alle Parameter entsprechen denen, die im Task-Editor eingestellt werden
Um schnell die vollständige Konfiguration einer Aufgabe zu erhalten, können Sie den Task-Editor verwenden, die Aufgabe erstellen und den JSON für die API-Anfrage abrufen
Beispielanfrage
{
"password": "pass",
"action": "addTask",
"data": {
"preset": "default",
"configPreset": "100 Threads",
"parsers": [
[
"SE::Bing",
"default",
{
"type": "override",
"id": "pagecount",
"value": 1
},
{
"type": "options",
"id": "parseAll",
"value": true
}
]
],
"resultsFormat": "$p1.serp.format('$link;$anchor\\n')",
"resultsSaveTo": "file",
"resultsFileName": "$datefile.format().csv",
"additionalFormats": [],
"resultsUnique": "string",
"queriesFrom": "text",
"queryFormat": [
"$query"
],
"uniqueQueries": true,
"saveFailedQueries": false,
"iteratorOptions": {
"onAllLevels": false,
"queryBuildersAfterIterator": false,
"queryBuildersOnAllLevels": false
},
"resultsOptions": {
"overwrite": false,
"writeBOM": true
},
"doLog": "db",
"limitLogsCount": "0",
"keepUnique": "No",
"moreOptions": true,
"resultsPrepend": "Link;Anker\n",
"resultsAppend": "",
"queryBuilders": [],
"resultsBuilders": [],
"configOverrides": [],
"runTaskOnComplete": null,
"useResultsFileAsQueriesFile": false,
"runTaskOnCompleteConfig": "default",
"toolsJS": "",
"prio": 5,
"removeOnComplete": false,
"callURLOnComplete": "",
"queries": [
"test",
"bla-bla"
]
}
}
Beispielantwort
In der Antwort wird die ID der erstellten Aufgabe zurückgegeben.
{
"success": 1,
"data": "697403"
}
Aufgabe mit Abfragen aus einer Datei
Damit in einer Aufgabe die Abfragen aus einer Datei entnommen werden, müssen "queriesFrom": "file" und der/die Pfad(e) zur/zu den Abfragedatei(en) "queriesFile": ["queries1.txt", "queries2.txt"] festgelegt werden. Ansonsten ist alles wie im obigen Beispiel.
Beispielanfrage
{
"password": "pass",
"action": "addTask",
"data": {
"preset": "default",
"configPreset": "100 Threads",
"parsers": [
[
"SE::Google",
"default"
]
],
"resultsFormat": "$p1.preset",
"resultsSaveTo": "file",
"resultsFileName": "$datefile.format().csv",
"additionalFormats": [],
"resultsUnique": "no",
"queriesFrom": "file",
"queryFormat": [
"$query"
],
"uniqueQueries": false,
"saveFailedQueries": false,
"iteratorOptions": {
"onAllLevels": false,
"queryBuildersAfterIterator": false,
"queryBuildersOnAllLevels": false
},
"resultsOptions": {
"overwrite": false,
"writeBOM": false
},
"doLog": "no",
"limitLogsCount": "0",
"keepUnique": "No",
"moreOptions": false,
"resultsPrepend": "",
"resultsAppend": "",
"queryBuilders": [],
"resultsBuilders": [],
"configOverrides": [],
"runTaskOnComplete": null,
"useResultsFileAsQueriesFile": false,
"runTaskOnCompleteConfig": "default",
"toolsJS": "",
"prio": 5,
"removeOnComplete": false,
"callURLOnComplete": "",
"queriesFile": [
"queries/Text Document.txt"
]
}
}
Beispielantwort
{
"success": 1,
"data": "5432"
}
Starten einer zuvor gespeicherten Aufgabe
Es können vorab über die Benutzeroberfläche erstellte Presets gestartet werden. In diesem Fall müssen lediglich die Abfragen angegeben werden. Es kann auch jeder Parameter der Aufgabe überschrieben werden; diese werden über die Werte im Preset angewendet.
Beispielanfrage
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains"
}
}
Beispielantwort
{
"success": 1,
"data": "5436"
}
Flag removeOnRestart
Dieses Flag gibt an, dass Aufgaben beim Neustart des Parsers gelöscht werden.
Beispielanfrage
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains",
"removeOnRestart": 1
}
}
Beispielantwort
{
"success": 1,
"data": "5437"
}
Flag removeOnComplete
Dieses Flag gibt an, dass Aufgaben nach Abschluss gelöscht werden.
Beispielanfrage
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains",
"removeOnComplete": 1
}
}
Beispielantwort
{
"success": 1,
"data": "5438"
}
info
Abrufen allgemeiner Informationen über den Status von A-Parser und Abrufen einer Liste aller verfügbaren Scraper.
Die aktuelle Versionsnummer von A-Parser kann direkt über den Link abgerufen werden: https://a-parser.com/members/versions
Beispiel:
{"lastBetaVersion":"1.2.1484","lastAlphaVersion":"1.2.1484","lastVersion":"1.2.1432"}
Beispielanfrage
{
"password": "pass",
"action": "info"
}
Beispielantwort
{
"success": 1,
"data": {
"tasksInQueue": 0,
"pid": "13968",
"activeProxyCheckerThreads": 0,
"workingTasks": 0,
"activeThreads": 0,
"version": "1.2.1151",
"availableParsers": [
"API::Server::Redis",
"Check::BackLink",
"Check::RosKomNadzor",
"DeepL::Translator",
"GooglePlay::Apps",
"HTML::EmailExtractor",
...
"Util::AntiGate",
"Util::ReCaptcha2",
"Util::YandexRecognize"
]
}
}
getParserPreset
Abrufen der Einstellungen des angegebenen Parsers und Presets.
Mit dieser Methode kann eine vollständige Liste der Parameter zur Verwendung in anderen API-Anfragen abgerufen werden.
Beispielanfrage
{
"password": "pass",
"action": "getParserPreset",
"data": {
"parser": "SE::Google",
"preset": "default"
}
}
Beispielantwort
{
"success": 1,
"data": {
"queryformat": "$query",
"parsenotfound": 1,
"reCaptchaRetries": 3,
"pagecount": 5,
"gl": "",
"proxyChecker": "*",
"hl": "en",
"domain": "www.google.com",
"timeout": 60,
"Util_ReCaptcha2_preset": "default",
"useproxy": 1,
"nfpr": 0,
"extraquery": "",
"serptime": "all",
"location": "",
"usesessions": 1,
"filter": 1,
"linksperpage": 100,
"dontTakeSession": 0,
"addHeaders": "",
"serp": "",
"proxyretries": 10,
"device": "desktop",
"requestdelay": 0,
"debug_nonexists_domains": 0,
"proxybannedcleanup": 600,
"formatresult": "$serp.format('$link\\n')",
"reCaptchaPassProxy": 0,
"lr": ""
}
}
getProxies
Anfrage einer Liste aktiver Proxys. Es wird eine Liste aktiver Proxys von allen Proxy-Checkern zurückgegeben.
Beispielanfrage
{
"password": "pass",
"action": "getProxies"
}
Beispielantwort
{
"success": 1,
"data": {
"127.0.0.1:23486": [
"socks"
],
"127.0.0.1:23140": [
"socks"
],
"127.0.0.1:21971": [
"http"
]
}
}
IP:port des Proxys wird als Name des Arrays angegeben. Das erste Element des Arrays ist der Proxy-Typ, der 3 Werte annehmen kann - http, socks, socks4. Wenn eine Authentifizierung per Login/Passwort angegeben ist, sind das zweite und dritte Element Login und Passwort.
Es kann auch eine Liste von Proxys nur von bestimmten Proxy-Checkern abgerufen werden. Dazu muss zusätzlich das Array checkers übergeben werden.
Beispiel:
{
"password": "pass",
"action": "getProxies",
"data": {
"checkers": [
"Elite proxies",
"free proxies"
]
}
}
getTaskState
Abrufen des Aufgabenstatus anhand seiner ID.
Beispielanfrage
{
"password": "pass",
"action": "getTaskState",
"data": {
"taskUid": "181"
}
}
Beispielantwort
{
"success": 1,
"data": {
"status": "completed",
"stats": "<b>Overall stats</b><br>Runtime: 0:00:19<br>HTTP requests: 464<br><br><b>1. HTML::LinkExtractor</b><br>Queries done: 254<br>Successful queries: 252<br>Proxies used: 0 (per query)<br>Retries used: 1.07 (per query)<br>HTTP requests: 1.82 (per query)",
"state": {
"totalFail": 2,
"totalWaitProxyThreads": 0,
"minimized": 0,
"queriesDoneCount": 254,
"avgSpeed": 802,
"activeThreads": 0,
"startTime": 1507281122,
"changeTime": 1507281141,
"queriesCount": 1,
"logExists": 0,
"runTime": 19,
"uniqueResultsCount": 656,
"requests": "464",
"addTime": 1507281120,
"additionalCount": 253,
"queriesDoneCountAtStart": 0,
"lastQuery": "https://www.nytimes.com/ref/membercenter/help/infoservdirectory.html",
"curSpeed": 846,
"started": 1,
"resultsCount": 31079
}
}
}
Als Antwort werden der Status der Aufgabe (status) und deren Statistiken (state) zurückgegeben.
Es können auch Informationen zu mehreren Aufgaben gleichzeitig abgerufen werden; dazu muss ein Array von IDs übergeben werden.
Beispielanfrage
{
"password": "pass",
"action": "getTaskState",
"data": {
"taskUid": [
"22",
"23",
"31"
]
}
}
In diesem Fall enthält die Antwort ein Array mit Daten zu jeder Aufgabe.
Beispielantwort
{
"success": 1,
"data": [
{
"status": "completed",
"stats": "<b>Overall stats</b><br>Runtime: 0:00:01<br>HTTP requests: 0<br><br><b>1. SE::Bing</b><br>Queries done: 0<br>Successful queries: 0<br>Proxies used: 0 (per query)<br>Retries used: 0 (per query)<br>HTTP requests: 0 (per query)",
"state": {
"totalFail": 0,
"totalWaitProxyThreads": 0,
"minimized": 0,
"queriesDoneCount": 0,
"avgSpeed": 0,
"activeThreads": 0,
"startTime": 1507023540,
"changeTime": 1507023541,
"queriesCount": 1,
"logExists": 1,
"runTime": 1,
"uniqueResultsCount": 0,
"requests": 0,
"addTime": 1507023443,
"additionalCount": 0,
"queriesDoneCountAtStart": 0,
"lastQuery": "none",
"curSpeed": 0,
"started": 1,
"resultsCount": 0
}
},
...Daten für die übrigen Aufgaben...
]
}
getTaskConf
Abrufen der Aufgabenkonfiguration anhand ihrer ID.
Beispielanfrage
{
"password": "pass",
"action": "getTaskConf",
"data": {
"taskUid": "181"
}
}
Beispielantwort
Als Antwort werden die Aufgabeneinstellungen zurückgegeben, einschließlich des resultierenden Dateinamens.
{
"success": 1,
"data": {
"parsers": [
[
"SE::Bing",
"default",
{
"value": 1,
"type": "override",
"id": "pagecount"
}
]
],
"resultsFileName": "Mar-05_13-12-23.txt",
"runTaskOnComplete": null,
"limitLogsCount": "0",
"resultsPrepend": "",
"origResultsFileName": "$datefile.format().txt",
"queriesFrom": "text",
"runTaskOnCompleteConfig": "default",
"doLog": "db",
"useResultsFileAsQueriesFile": 0,
"additionalFormats": [],
"resultsSaveTo": "file",
"callURLOnComplete": "",
"resultsFormat": "$p1.related.format('$key\\n')",
"queryBuilders": [],
"preset": "default",
"resultsAppend": "",
"uniqueQueries": 0,
"keepUnique": 0,
"prio": "5",
"saveFailedQueries": 0,
"configPreset": "100 Threads",
"queries": [
"test"
],
"toolsJS": "",
"moreOptions": 0,
"resultsBuilders": [],
"resultsUnique": "string",
"iteratorOptions": {
"onAllLevels": 0,
"queryBuildersAfterIterator": 0,
"queryBuildersOnAllLevels": 0
},
"removeOnComplete": 0,
"queryFormat": [
"$query"
],
"configOverrides": [],
"resultsOptions": {
"overwrite": 0,
"writeBOM": 0
}
}
}
getTaskResultsFile
Abrufen eines Download-Links für das Ergebnis anhand der Aufgaben-ID. Über den erhaltenen Link kann die Datei nur einmal ohne Authentifizierung heruntergeladen werden (es wird ein Einmal-Token verwendet).
Funktioniert nur mit statischen Dateinamen und $datefile.format(). Um einen dynamischen Ergebnisdateinamen in einen statischen umzuwandeln, kann das Template-Flag isStaticTemplate() verwendet werden.
Beispielanfrage
{
"password": "pass",
"action": "getTaskResultsFile",
"data": {
"taskUid": "181"
}
}
Beispielantwort
{
"success": 1,
"data": "http://127.0.0.1:9091/downloadResults?fileName=Mar-05_13-12-23.txt&token=wbvwlkes"
}
getTasksList
Abrufen einer Liste aktiver Aufgaben. Wenn der zusätzliche Parameter completed: 1 übergeben wird, erhalten wir eine Liste der abgeschlossenen Aufgaben.
Beispielanfrage
{
"password": "pass",
"action": "getTasksList",
"data": {
"completed": "1"
}
}
Beispielantwort
{
"success": 1,
"data": [
"2291",
"2324",
"2331",
"2384",
"2398",
"2434",
"2445",
"3482",
...
]
}
getParserInfo
Gibt eine Liste aller verfügbaren Ergebnisse aus, die der angegebene Parser zurückgeben kann.
Beispielanfrage
{
"password" : "pass",
"action" : "getParserInfo",
"data" : {
"parser" : "SE::Google"
}
}
Beispielantwort
{
"success": 1,
"data": {
"results": {
"arrays": {
"ads": [
"Ads list",
[
[
"link",
"Link"
],
...
]
],
"related": [
"Related keywords",
[
[
"key",
"Key"
]
]
],
"rich": [
"Rich snippets list",
[
[
"name",
"Name"
]
]
],
"serp": [
"Main serp list",
[
[
"link",
"Link"
],
...
]
],
"pages": [
"Raw data array",
[
[
"data",
"Raw data"
]
]
]
},
"flat": [
[
"query",
"Formatted query"
],
...
]
}
}
}
getAccountsCount
Abrufen der Anzahl aktiver Yandex-Accounts.
Beispielanfrage
{
"password": "pass",
"action": "getAccountsCount"
}
Beispielantwort
{
"success": 1,
"data": {
"SE::Yandex": 18
}
}
deleteTaskResultsFile
Löschen der Ergebnisdatei anhand der Aufgaben-ID.
Beispielanfrage
{
"password": "pass",
"action": "deleteTaskResultsFile",
"data": {
"taskUid": "181"
}
}
Beispielantwort
{
"success": 1
}
changeTaskStatus
Änderung des Aufgabenstatus anhand seiner ID. Es gibt insgesamt 4 Zustände, in die eine Aufgabe versetzt werden kann:
- starting - Start der Aufgabe
- pausing - Pausieren
- stopping - Stoppen der Aufgabe
- deleting - Löschen der Aufgabe
Beispielanfrage
{
"password": "pass",
"action": "changeTaskStatus",
"data": {
"taskUid": "181",
"toStatus": "deleting"
}
}
Beispielantwort
{
"success": 1
}
changeProxyCheckerState
Änderung des Status des Proxy-Checkers (1 - aktiviert / 0 - deaktiviert).
Beispielanfrage
{
"password": "pass",
"action": "changeProxyCheckerState",
"data": {
"checker": "proxychecker name",
"state": 1
}
}
Beispielantwort
{
"success": 1
}
moveTask
Verschieben einer Aufgabe in der Warteschlange anhand ihrer ID. Mögliche Richtungen für das Verschieben:
- start - an den Anfang der Warteschlange
- end - ans Ende der Warteschlange
- up - eine Position nach oben
- down - eine Position nach unten
Beispielanfrage
{
"password": "pass",
"action": "moveTask",
"data": {
"taskUid": "181",
"direction": "start"
}
}
Beispielantwort
{
"success": 1
}
update
Aktualisiert die ausführbare Datei des Parsers auf die neueste verfügbare Version. Nach dem Senden des Befehls wird A-Parser automatisch neu gestartet. Die API gibt eine Erfolgsmeldung zurück, nachdem die ausführbare Datei heruntergeladen und aktualisiert wurde; dies kann 1-3 Minuten dauern.
Beispielanfrage
{
"password": "pass",
"action": "update"
}
Beispielantwort
{
"success": 1
}