Skip to content

πŸ€–πŸ‘ Π§Π°Ρ‚-Π±ΠΎΡ‚ для отслСТивания Π½ΠΎΠ²Ρ‹Ρ… объявлСний Kufar

License

Notifications You must be signed in to change notification settings

evgeniy-kolmak/patrebna

Repository files navigation

PATREBNA

Typescript Version Node telegram botapi Version Database Languages App Version License

Π§Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ этот Π±ΠΎΡ‚?

Patrebna bot - Π±ΠΎΡ‚ парсСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отслСТиваСт ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ ΠΎ появлСнии Π½ΠΎΠ²Ρ‹Ρ… объявлСний Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅ Kufar. БообщСния приходят Π² Π»ΠΈΡ‡Π½ΡƒΡŽ пСрСписку с Π±ΠΎΡ‚ΠΎΠΌ.

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ² с Π±ΠΎΡ‚ΠΎΠΌ

Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ, достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Π° /start ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку для отслСТивания (с Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠΈ настроСнными Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) - https://kufar.by/l/Π³ΠΎΡ€ΠΎΠ΄/Ρ‚ΠΎΠ²Π°Ρ€/.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ΠšΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ парсит Π±ΠΎΡ‚

  • Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ„ΠΎΡ‚ΠΎ
  • Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ
  • ОписаниС (Ссли Π΅ΡΡ‚ΡŒ)
  • Π¦Π΅Π½Π°
  • Бсылка Π½Π° объявлСниС
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ объявлСний (ΠΠ΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡ‚ΡŒ, Авто ΠΈΠ»ΠΈ Π”Ρ€ΡƒΠ³ΠΎΠ΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сообщСния

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ коммСрчиских объявлСний ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π§Ρ‚ΠΎ Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ - ΡƒΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· ΠΊΠΎΠ΄Π° src/parsers/kufar/categories/other.ts (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) isNotCompanyAd.

ДокумСнтация

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅

  • Π’ ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» окруТСния - touch .env.
MONGO_INITDB_ROOT_USERNAME= ИМЯ_ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π•Π›Π―_Π‘Π”
MONGO_INITDB_ROOT_PASSWORD= ΠŸΠΠ ΠžΠ›Π¬_ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π•Π›Π―_Π‘Π”
TELEGRAM_BOT_TOKEN= Π’ΠžΠšΠ•Π_Π‘ΠžΠ’Π_Π’Π•Π›Π•Π“Π ΠΠœ
WEBHOOK_HOST= АДРЕБ_БЕРВЕРА (IP)
WEBHOOK_PORT= ПОРВ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 8443 ΠΈΠ»ΠΈ 443 для ssl)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SSL сСртификатов

  • Π’ ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ сСртификатов - mkdir certs.
  • ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² дирСктория cd certs ΠΈ Π² Π½Π΅ΠΉ создаСм Π΄Π²Π΅ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ mkdir mongodb && mkdir bot
  • Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρ€ΡƒΡ†ΠΈΠΈ touch openssl.cnf && touch config.cnf

Openssl.cnf

[ req ]
distinguished_name = x509_distinguished_name
x509_extensions = x509_ext
prompt = no
default_md = sha256

[ x509_distinguished_name ]
CN = ΠžΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ 
O = НазваниС компании
L = Π“ΠΎΡ€ΠΎΠ΄
C = Π Π΅Π³ΠΈΠΎΠ½

[ x509_ext ]
basicConstraints = critical,CA:true
keyUsage = critical, keyCertSign, cRLSign

Config.cnf

[ req ]
distinguished_name = x509_distinguished_name
x509_extensions = x509_ext
prompt = no
default_md = sha256

[ x509_distinguished_name ]
CN = ΠžΠ±Ρ‰Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ (Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ openssl.cnf ΠΈΠ½Π°Ρ‡Π΅ сСртификаты Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ самоподписанными)
O = НазваниС компании
L = Π“ΠΎΡ€ΠΎΠ΄
C = Π Π΅Π³ΠΈΠΎΠ½

[ x509_ext ]
basicConstraints = critical,CA:false
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names

[ alt_names ]
IP.1 = Π”ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ адрСс (IP сСрвСра)
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ†Π΅Ρ‚Ρ€Π° сСртификации
openssl genrsa -out ca-key.pem 4096
openssl req -x509 -new -nodes -key ca-key.pem -sha256 -days 365 -out ca.pem -config openssl.cnf
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСртификата для Mongodb
openssl genrsa -out mongodb/mongodb-key.pem 4096
openssl req -new -key mongodb/mongodb-key.pem -out mongodb/mongodb.csr -config config.cnf
openssl x509 -req -in mongodb/mongodb.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out mongodb/mongodb-cert.pem -days 365 -sha256
cat mongodb/mongodb-cert.pem mongodb/mongodb-key.pem > mongodb/mongodb.pem
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ клиСнтского сСртификата
openssl genrsa -out client-key.pem 4096
openssl req -new -key client-key.pem -out client.csr -config config.cnf
openssl x509 -req -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365 -sha256
cat client-cert.pem client-key.pem > client.pem
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SSL сСртификата для webhook
openssl req -x509 -newkey rsa:2048 -keyout bot/key.pem -out bot/cert.pem -days 365 -nodes -subj "/CN=IP_БЕРВЕРА"

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± SSL для Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚ΠΎΠ²

Запуск ΠΈ сборка

Для старта ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ).

cd .Docker && docker-compose --env-file ../.env up -d

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация

  • Π‘ΠΎΡ‚ - ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° языка (русский ΠΈ бСлорусский).
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наличия Π½ΠΎΠ²Ρ‹Ρ… объявлСний выполняСтся Ρ€Π°Π· Π² 15 ΠΌΠΈΠ½ΡƒΡ‚ (*/15).
  • ДирСктория .github Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ дСплоя Π½Π° сСрвСр (Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ).

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ

ЛицСнзия

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Patrebna распространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ MIT.

About

πŸ€–πŸ‘ Π§Π°Ρ‚-Π±ΠΎΡ‚ для отслСТивания Π½ΠΎΠ²Ρ‹Ρ… объявлСний Kufar

Topics

Resources

License

Stars

Watchers

Forks