Metodi API
ping
Verifica del funzionamento del server e delle API.
Esempio di richiesta
{
"password": "pass",
"action": "ping"
}
Esempio di risposta
{
"success": 1,
"data": "pong"
}
oneRequest
Singola richiesta di scraping, può essere utilizzato qualsiasi scraper e preset. Come risultato verrà generata una stringa in conformità con il formato del risultato impostato nel preset, oltre al log completo del funzionamento dello scraper.
Esempio di richiesta
{
"password": "pass",
"action": "oneRequest",
"data": {
"query": "test",
"parser": "SE::Google",
"configPreset": "default",
"preset": "Pages Count use Proxy"
}
}
Descrizione dei parametri possibili:
parser- quale scraper utilizzare per eseguire la richiestapreset- quale preset utilizzareconfigPreset- quale configurazione dei thread utilizzarequery- la query stessarawResults- parametro opzionale, se impostato, invece della stringa di risultato resultString restituirà un array results con tutti i risultati supportati dallo scraper specificatoneedData- parametro opzionale che indica se trasmettere data e pages nella risposta, utilizzato per risparmiare memoria, disabilitato per impostazione predefinitadoLog- parametro opzionale, indica se restituire il log di funzionamento insieme ai risultati, abilitato per impostazione predefinitaoptions- array con opzioni aggiuntive applicate allo scraper, ad esempio - override - permette di sovrascrivere i valori nel preset
Esempio di risposta
{
"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"
]
]
}
}
Descrizione delle variabili nella risposta:
resultString- stringa del risultatologs- array con i log di esecuzione della richiesta
Sovrascrittura dei parametri dello scraper
In options è possibile sovrascrivere qualsiasi parametro dello scraper utilizzato; questi verranno applicati sopra i valori specificati nel preset delle impostazioni.
Esempio di richiesta:
{
"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
}
]
}
}
Risposta:
{
"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
Richiesta massiva di scraping, può essere utilizzato qualsiasi scraper e preset, ed è inoltre possibile specificare in quanti thread eseguire lo scraping. Come risultato verrà generata una stringa in conformità con il formato del risultato impostato nel preset, oltre al log completo del funzionamento dello scraper per ogni thread.
Esempio di richiesta
{
"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"
]
}
}
Descrizione delle variabili possibili in data:
threads- numero di thread per lo scrapingqueries- array di query. Le restanti variabili sono completamente analoghe a oneRequest, ad eccezione diquery
Esempio di risposta
{
"success": 1,
"data": {
"logs": {
"0": {
"1": [
[
4,
1614935687,
"SE::Google::0",
"test1"
],
...
[
0,
1614935688,
"Thread complete work"
]
]
},
...log per gli altri thread...
},
"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
},
...risultati per le altre query...
]
}
}
addTask
Aggiunta di un'attività alla coda, tutti i parametri sono analoghi a quelli impostati nell'interfaccia dell'Editor delle attività
Per ottenere rapidamente la configurazione completa di un'attività, è possibile utilizzare l'Editor delle attività, comporre l'attività e ottenere il JSON per la richiesta API
Esempio di richiesta
{
"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;Anchor\n",
"resultsAppend": "",
"queryBuilders": [],
"resultsBuilders": [],
"configOverrides": [],
"runTaskOnComplete": null,
"useResultsFileAsQueriesFile": false,
"runTaskOnCompleteConfig": "default",
"toolsJS": "",
"prio": 5,
"removeOnComplete": false,
"callURLOnComplete": "",
"queries": [
"test",
"bla-bla"
]
}
}
Esempio di risposta
Nella risposta viene restituito l'id dell'attività creata.
{
"success": 1,
"data": "697403"
}
Attività con query da file
Affinché le query nell'attività vengano prelevate da un file, è necessario impostare "queriesFrom": "file" e il percorso (o i percorsi) dei file delle query "queriesFile": ["queries1.txt", "queries2.txt"]. Per il resto, tutto è uguale all'esempio sopra.
Esempio di richiesta
{
"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"
]
}
}
Esempio di risposta
{
"success": 1,
"data": "5432"
}
Avvio di un'attività precedentemente salvata
È possibile avviare un preset creato in precedenza tramite l'interfaccia. In questo caso è necessario indicare solo le query. È inoltre possibile sovrascrivere qualsiasi parametro dell'attività; questi verranno utilizzati sopra i valori nel preset.
Esempio di richiesta
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains"
}
}
Esempio di risposta
{
"success": 1,
"data": "5436"
}
Flag removeOnRestart
Questo flag indica che le attività verranno eliminate al riavvio dello scraper.
Esempio di richiesta
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains",
"removeOnRestart": 1
}
}
Esempio di risposta
{
"success": 1,
"data": "5437"
}
Flag removeOnComplete
Questo flag indica che le attività verranno eliminate dopo il completamento.
Esempio di richiesta
{
"password": "pass",
"action": "addTask",
"data": {
"queriesFrom": "text",
"queries": [
"google.com",
"yandex.ru"
],
"configPreset": "default",
"preset": "Analyze Domains",
"removeOnComplete": 1
}
}
Esempio di risposta
{
"success": 1,
"data": "5438"
}
info
Ottenimento di informazioni generali sullo stato di A-Parser e dell'elenco di tutti gli scraper disponibili.
È possibile ottenere il numero dell'attuale versione di A-Parser direttamente tramite il link: https://a-parser.com/members/versions
Esempio:
{"lastBetaVersion":"1.2.1484","lastAlphaVersion":"1.2.1484","lastVersion":"1.2.1432"}
Esempio di richiesta
{
"password": "pass",
"action": "info"
}
Esempio di risposta
{
"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
Ottenimento delle impostazioni dello scraper e del preset specificati.
Con questo metodo è possibile ottenere l'elenco completo dei parametri da utilizzare in altre richieste API.
Esempio di richiesta
{
"password": "pass",
"action": "getParserPreset",
"data": {
"parser": "SE::Google",
"preset": "default"
}
}
Esempio di risposta
{
"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
Richiesta dell'elenco dei proxy attivi. Viene restituito l'elenco dei proxy attivi da tutti i proxychecker.
Esempio di richiesta
{
"password": "pass",
"action": "getProxies"
}
Esempio di risposta
{
"success": 1,
"data": {
"127.0.0.1:23486": [
"socks"
],
"127.0.0.1:23140": [
"socks"
],
"127.0.0.1:21971": [
"http"
]
}
}
IP:port del proxy verrà indicato come nome dell'array. Il primo elemento dell'array è il tipo di proxy, può assumere 3 valori - http, socks, socks4. Se è specificata l'autorizzazione tramite login\password, il secondo e il terzo elemento saranno login e password.
È inoltre possibile ottenere l'elenco dei proxy solo da determinati proxychecker. Per fare ciò, è necessario passare aggiuntivamente l'array checkers.
Esempio:
{
"password": "pass",
"action": "getProxies",
"data": {
"checkers": [
"Elite proxies",
"free proxies"
]
}
}
getTaskState
Ottenimento dello stato dell'attività tramite il suo id.
Esempio di richiesta
{
"password": "pass",
"action": "getTaskState",
"data": {
"taskUid": "181"
}
}
Esempio di risposta
{
"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
}
}
}
In risposta vengono restituiti lo stato dell'attività (status) e le sue statistiche (state).
È inoltre possibile ottenere informazioni su più attività contemporaneamente; per farlo è necessario passare un array di id.
Esempio di richiesta
{
"password": "pass",
"action": "getTaskState",
"data": {
"taskUid": [
"22",
"23",
"31"
]
}
}
In questo caso, la risposta conterrà un array con i dati per ogni attività.
Esempio di risposta
{
"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
}
},
...dati per le altre attività...
]
}
getTaskConf
Ottenimento della configurazione dell'attività tramite il suo id.
Esempio di richiesta
{
"password": "pass",
"action": "getTaskConf",
"data": {
"taskUid": "181"
}
}
Esempio di risposta
In risposta vengono restituite le impostazioni dell'attività, incluso il nome del file risultante.
{
"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
Ottenimento del link per scaricare il risultato tramite l'id dell'attività. Tramite il link ottenuto è possibile scaricare il file solo una volta, senza autorizzazione (viene utilizzato un token monouso).
Funziona solo con un nome file statico e $datefile.format(). Per trasformare un nome file di risultato dinamico in uno statico, è possibile utilizzare il flag del motore di template isStaticTemplate()
Esempio di richiesta
{
"password": "pass",
"action": "getTaskResultsFile",
"data": {
"taskUid": "181"
}
}
Esempio di risposta
{
"success": 1,
"data": "http://127.0.0.1:9091/downloadResults?fileName=Mar-05_13-12-23.txt&token=wbvwlkes"
}
getTasksList
Ottenimento dell'elenco delle attività attive. Se si passa il parametro aggiuntivo completed: 1, si otterrà l'elenco delle attività completate.
Esempio di richiesta
{
"password": "pass",
"action": "getTasksList",
"data": {
"completed": "1"
}
}
Esempio di risposta
{
"success": 1,
"data": [
"2291",
"2324",
"2331",
"2384",
"2398",
"2434",
"2445",
"3482",
...
]
}
getParserInfo
Visualizza l'elenco di tutti i risultati disponibili che lo scraper specificato può restituire.
Esempio di richiesta
{
"password" : "pass",
"action" : "getParserInfo",
"data" : {
"parser" : "SE::Google"
}
}
Esempio di risposta
{
"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
Ottenimento del numero di account Yandex attivi.
Esempio di richiesta
{
"password": "pass",
"action": "getAccountsCount"
}
Esempio di risposta
{
"success": 1,
"data": {
"SE::Yandex": 18
}
}
deleteTaskResultsFile
Eliminazione del file di risultato tramite l'id dell'attività.
Esempio di richiesta
{
"password": "pass",
"action": "deleteTaskResultsFile",
"data": {
"taskUid": "181"
}
}
Esempio di risposta
{
"success": 1
}
changeTaskStatus
Modifica dello stato dell'attività tramite il suo id. Esistono in totale 4 stati in cui è possibile portare un'attività:
- starting - avvio dell'attività
- pausing - messa in pausa
- stopping - arresto dell'attività
- deleting - eliminazione dell'attività
Esempio di richiesta
{
"password": "pass",
"action": "changeTaskStatus",
"data": {
"taskUid": "181",
"toStatus": "deleting"
}
}
Esempio di risposta
{
"success": 1
}
changeProxyCheckerState
Modifica dello stato del proxychecker (1 - abilitato / 0 - disabilitato).
Esempio di richiesta
{
"password": "pass",
"action": "changeProxyCheckerState",
"data": {
"checker": "proxychecker name",
"state": 1
}
}
Esempio di risposta
{
"success": 1
}
moveTask
Spostamento dell'attività nella coda tramite il suo id. Possibili direzioni di spostamento:
- start - all'inizio della coda
- end - alla fine della coda
- up - una posizione in su
- down - una posizione in giù
Esempio di richiesta
{
"password": "pass",
"action": "moveTask",
"data": {
"taskUid": "181",
"direction": "start"
}
}
Esempio di risposta
{
"success": 1
}
update
Aggiorna il file eseguibile dello scraper all'ultima versione disponibile. Dopo l'invio del comando, A-Parser verrà riavviato automaticamente. L'API restituirà una risposta di successo dopo aver scaricato e aggiornato il file eseguibile; l'operazione può richiedere 1-3 minuti.
Esempio di richiesta
{
"password": "pass",
"action": "update"
}
Esempio di risposta
{
"success": 1
}