Sign inSign up

diazdavid/crawler-golang

By diazdavid

•Updated over 5 years ago

Image
0

5.7K

diazdavid/crawler-golang repository overview

⁠Documentación

⁠Ayuda

$ 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)

⁠Uso con parámetros

El crawler se puede pasar la configuración por parámetros o por fichero.

⁠Básico

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 '/'
⁠Con autenticación htpasswd

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 '/'
⁠Añadir cookies en todas las peticiones

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 '/'
⁠Añadir cabecera en todas las peticiones

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 '/'
⁠Incluir urls que se quedan fuera del crawler

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 '/'
⁠Añadir logs en la salida

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 '/'
⁠Especificar el número de hilos

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 '/'
⁠Especificar timeout de las peticiones

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 '/'
⁠Resolver contra una ip y puerto específico

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 '/'

⁠Uso con fichero

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
⁠Contenido del yaml

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'
⁠Indicarle al crawler que config coger del fichero

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

Tag summary

Content type

Image

Digest

Size

7.5 MB

Last updated

over 5 years ago

docker pull diazdavid/crawler-golang