Giter VIP home page Giter VIP logo

proxy-collector's Introduction

Proxy-collector

Some services for searching, checking and saving proxies from the WEB.

Found proxies are here.

How it works?

  1. Start external and proxy-collector services.
  2. Get proxies in postgreSQL in table proxies. These proxies are fresh because they are checked every 10 minutes.

image with service interaction

Production

  1. Start external services:
  • rabbitMQ. Add this to advanced.config:
[
  {rabbit, [
    {consumer_timeout, undefined}
  ]}
].
  • redis for collecting sites.
  • redis for collecting proxies.
  • postgreSQL (within migrations).
  • grafana loki / promtail / grafana.
  1. Create config file ./config/prod-app.json similar to ./config/develop-app.json.
  • In ip_api_url you can use https://public-ip.dev/, https://api64.ipify.org/ or other similar services.
  1. Start services (in brackets the recommended number of service workers per 1 IP).
  • go build .
  • ./proxy-collector -config=./config/prod-app.json -service=findProxySourcesFromDDG -workers=1 (only 1 worker)
  • ./proxy-collector -config=./config/prod-app.json -service=processProxySources -workers=64 (64 <= workers <= 512)
  • ./proxy-collector -config=./config/prod-app.json -service=transferDeferredProxySources -workers=1 (only 1 worker)
  • ./proxy-collector -config=./config/prod-app.json -service=processRawProxies -workers=512 (512 <= workers <= 1024)
  • ./proxy-collector -config=./config/prod-app.json -service=fillCheckProxies -workers=1 (only 1 worker)
  • ./proxy-collector -config=./config/prod-app.json -service=processCheckProxies -workers=64 (64 <= workers <= 1024)

Local development

  1. Start external services:
  • rabbitMQ: docker run --name proxy-collector-rabbit -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit consumer_timeout false" rabbitmq:3-management
  • redis for collecting sites: docker run --name proxy-collector-redis-sites -d -p 6379:6379 redis:6
  • redis for collecting proxies: docker run --name proxy-collector-redis-proxies -d -p 6380:6379 redis:6
  • postgreSQL:
    1. docker run --name proxy-collector-postgres -d -p 5432:5432 -v ${PWD}/migrations:/migrations -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin postgres:13
    2. execute migrations: for f in migrations/*.sql; do; docker exec -t proxy-collector-postgres psql -U admin -d admin -f "/$f"; done
  • grafana loki / promtail / grafana:
    1. docker run --name proxy-collector-loki -d -v $(pwd)/config:/mnt/config -p 3100:3100 grafana/loki:2.2.1 -config.file=/mnt/config/develop-loki.yaml
    2. docker run --name proxy-collector-promtail -d -v $(pwd)/config:/mnt/config -v /var/log:/var/log grafana/promtail:2.2.1 -config.file=/mnt/config/develop-promtail.yaml
    3. docker run --name proxy-collector-grafana -d -p 3000:3000 grafana/grafana:latest
    4. go to http://localhost:3000 (login: admin, password: admin) and add data source -> Loki -> set url to http://localhost:3100 (on macOS - http://docker.for.mac.localhost:3100)
  1. Start services (it is necessary to start at least one instance of each service for correct work):
  • go build .
  • ./proxy-collector -config=./config/develop-app.json -service=findProxySourcesFromDDG
  • ./proxy-collector -config=./config/develop-app.json -service=processProxySources
  • ./proxy-collector -config=./config/develop-app.json -service=transferDeferredProxySources
  • ./proxy-collector -config=./config/develop-app.json -service=processRawProxies
  • ./proxy-collector -config=./config/develop-app.json -service=fillCheckProxies
  • ./proxy-collector -config=./config/develop-app.json -service=processCheckProxies
  1. Show rabbitMQ management: http://localhost:15672 (login: admin, password: admin).

  2. Show logs at http://localhost:3000/explore (login: admin, password: admin), query - {source="proxy-collector"}.

  3. Show processed proxies - table proxies in postgreSQL. User: admin, password: admin, database: admin.

proxy-collector's People

Contributors

roma8ok avatar

Stargazers

Alexey Kuzyashin avatar  avatar

Watchers

 avatar

Forkers

kuzyashin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.