$ docker run --rm diazdavid/crawler-golang:1.4.1 crawl -h
Crawl url
Usage:
crawler crawl [flags]
Flags:
-a, --auth string Basic Auth username:password
-C, --config string Read config from file
-c, --cookie stringArray Cookie to include in the requests
-D, --depth int Exclude URLs with depth greater that the value (default -1)
-d, --domain string Domain to crawl
-H, --header stringArray Header to include in the requests
-h, --help help for crawl
-i, --include stringArray Regular expression for url to include the crawl
-p, --path string Initial path to crawl
-P, --print stringArray Name header to include in log
-r, --resolve string IP o Domain + port where resolve DNS
-t, --threads int Number threads (default 5)
-T, --timeout int Seconds to timeout request (default 120)
El crawler se puede pasar la configuración por parámetros o por fichero.
Hay 2 parámetros obligatorios: el dominio (-d) y el path (-p)
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -d 'https://example.org' -p '/'
Usamos el parámetro (-a) con user:pass
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -a 'user:pass' -d 'https://example.org' -p '/'
Usamos el parámetro (-c) tantas veces como cookies hagan falta
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -c 'name_cookie=ccccc' -c 'test=foo' -d 'https://example.org' -p '/'
Usamos el parámetro (-H) tantas veces como cabeceras hagan falta
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -H 'X-Name-Header=xxxxxx' -H 'X-Test=sasasa' -d 'https://example.org' -p '/'
El crawler excluirá todas las urls que no cuelguen de la url inicial Usamos el parámetro (-i) tantas veces como expresiones regulares queramos añadir
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -i 'example.com' -d 'https://example.org' -p '/'
Por defecto en la salida del log solo se imprime la url crawleada y el status code pero se pueden añadir más. Usamos el parámetro (-P) tantas veces como log queramos añadir
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -P "x-custom-response" -P "cf-cache-status" -d 'https://example.org' -p '/'
Por defecto el crawler usa 5 hilos pero se puede modificar Usamos el parámetro (-t) con el número de hilos
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -t 10 -d 'https://example.org' -p '/'
Por defecto el crawler tiene un timeout de 120s pero se puede modificar Usamos el parametro (-T) para motificar el timeout en segundos
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -T 90 -d 'https://example.org' -p '/'
Si queremos que el crawler resuelva la petición contra una ip y puerto especifico usamos el parámetro (-r)
docker run --rm diazdavid/crawler-golang:1.4.1 crawl -r '93.189.XX.XX:30443' -d 'https://example.org:30443' -p '/'
Toda la configuración anterior se le puede pasar mediante un fichero yaml. Para ello lo primero que tenemos que hacer es pasarle un volumen al contenedor, bindearlo a /root/.crawler y que contenga un fichero llamado config.yaml:
docker run --rm -v $HOME/.crawler:/root/.crawler diazdavid/crawler-golang:1.4.1 crawl
Se puede tener preconfigurado tantos crawlers como se quiera, solo hay que ir cambiando el atributo name
---
crawlers:
- name: example
domain: 'https://example.org'
path: '/renting-coches/'
threads: 5
cookies:
- 'name_cookie=xxxxxx'
- 'name_cookie=xxxxxx'
- 'name_cookie=xxxxxx'
- 'name_cookie=xxxxxx'
headers:
- 'X-Name-Header=xxxxxx'
- 'X-Name-Header=xxxxxx'
- 'X-Name-Header=xxxxxx'
- 'X-Name-Header=xxxxxx'
includes:
- 'fotos'
prints:
- 'x-custom-response'
timeout: 120
auth: 'user:pass'
resolve: '128.0.0.1:53'
Cuando hacemos uso del yaml le tenemos que indicar al crawler que config es la que queremos usar. Usamos el parámetro -C con en name del fichero
docker run --rm -v $HOME/.crawler:/root/.crawler diazdavid/crawler-golang:1.4.1 crawl -C example
Content type
Image
Digest
Size
7.5 MB
Last updated
over 5 years ago
docker pull diazdavid/crawler-golang