UniversalTelegramBot proxy

su
Offline
Зарегистрирован: 18.04.2018

Добрый день!

Кто-нибудь пробовал переписать библиотеку UniversalTelegramBot.h с использованием proxy socks5?

negavoid
Offline
Зарегистрирован: 09.07.2016

Нет, не пробовал, никто не любит хайпы и хайповальщиков. Но задача вполне выполнимая.

Во всех функциях внутри UniversalTelegramBot.cpp нужно заменить код подключения с проверкой к серверу (строки 100-108, например, и другие такие же) на своё подключение. Connect делаем не на HOST, SSL_PORT, а на socks5_ip, socks5_port. Если сокет успешно приконнектился, шлём в него \х5 \х1 \х0. Читаем двухбайтовый ответ, оттуда должны ответить \х5 \х0. Теперь шлём туда \х5 \х1 \х0 \х3 \х10 api.telegram.org \х1 \хBB. Читаем десять байт, если первые три равны \х5 \х0 \х0, значит всё нормально и сокет успешно подключен к серверу телеграм через сокс5, далее включаем ssl на этом сокете и работаем как обычно.

su
Offline
Зарегистрирован: 18.04.2018

negavoid пишет:

Нет, не пробовал, никто не любит хайпы и хайповальщиков. Но задача вполне выполнимая

Я не ради хайпа. Бот перестал работать, а у меня на него много в умном доме завязано. Спасибо попробую разобраться

enemykrs
Offline
Зарегистрирован: 28.12.2011

мне тоже интересна эта тема, бот перестал отвечать (

будут результаты, поделитесь

su
Offline
Зарегистрирован: 18.04.2018

enemykrs пишет:

мне тоже интересна эта тема, бот перестал отвечать (

будут результаты, поделитесь

К сожалению моих знаний не хватает для переделки. Решил запустить трафик от arduino через VPN на роутере.

 

pasha413
Offline
Зарегистрирован: 27.11.2016

Здравствуйте.

я через библиотеку UniversalTelegramBot.h отправляю с бота, но боту никак не могу отправить (он не видит их).

у меня связка arduino nano vs sim800

не подскажете, может знаете как принять сообщение в бота?

вот код для отправки сообщений

#define TINY_GSM_MODEM_SIM800
#include <TinyGsmClient.h>
#include <ArduinoHttpClient.h>
#include <UniversalTelegramBot.h>

#include <SoftwareSerial.h>
SoftwareSerial SerialAT(7, 6); // RX, TX

#define DUMP_AT_COMMANDS
#define SerialMon Serial
#ifdef DUMP_AT_COMMANDS
  #include <StreamDebugger.h>
  StreamDebugger debugger(SerialAT, SerialMon);
  TinyGsm modem(debugger);
#else
  TinyGsm modem(SerialAT);
#endif

const char apn[] = "*******"; //apn
const char user[] = ""; //username
const char pass[] = ""; //pass

// Initialize Telegram BOT
#define BOTtoken "******" // 
int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime; //last time messages' scan has been done

TinyGsmClientSecure client(modem);
UniversalTelegramBot bot(BOTtoken, client);

void setup() {
  Serial.begin(9600);
  delay(10);
  // Set GSM module baud rate
  SerialAT.begin(9600);
  delay(3000);
  modem.sendAT(GF("+HTTPSSL=1")); //enable ssl. maybe don't need
  modem.waitResponse();
  if (!modem.hasSSL()) {
    Serial.println("SSL is not supported by this modem");
    //delay(10000);
  return;
  }
  //wait for network
  Serial.print(F("Waiting for network..."));
  if (!modem.waitForNetwork()) {
    Serial.println(" fail");
    delay(10000);
    return;
  }
  Serial.println(" OK");
  //connect to gprs
  Serial.print(F("Connecting to "));
  Serial.print(apn);
  if (!modem.gprsConnect(apn, user, pass)) {
    Serial.println(" fail");
    delay(10000);
    return;
  } else {Serial.println(" OK");}
  //not needed actually
  IPAddress local = modem.localIP();
  modem.waitResponse();
  Serial.println(local);
}

void loop() {
  String chat_id = "*****";
  String text = "start";
  String parses = "";
  Serial.println("Send message");
  Serial.println(bot.sendMessage(chat_id, text, parses));
  delay(30000);
}

вот для приема сообщения, не работает..

#define TINY_GSM_MODEM_SIM800
#include <TinyGsmClient.h>
#include <ArduinoHttpClient.h>
#include <UniversalTelegramBot.h>

#include <SoftwareSerial.h>
SoftwareSerial SerialAT(7, 6); // RX, TX

#define DUMP_AT_COMMANDS
#define SerialMon Serial
#ifdef DUMP_AT_COMMANDS
  #include <StreamDebugger.h>
  StreamDebugger debugger(SerialAT, SerialMon);
  TinyGsm modem(debugger);
#else
  TinyGsm modem(SerialAT);
#endif

const char apn[] = "internet.tele2.ru"; //apn
const char user[] = ""; //username
const char pass[] = ""; //pass

// Initialize Telegram BOT
//#define BOTtoken "438295695:AAHF8YCKdt_FoWYGn4eDVqqeCXBaM7f-xeQ" // My Home    Mytesthome_bot 
//#define BOTtoken "550569371:AAH0AdfvC_P9IM8gTgP2Pjn0AfNVcKIE-bA" // ESP8266    ESP2433_bot 
//#define BOTtoken "591715154:AAEnGf50Mu2rv6XdiQ-iKtVHC8q2H-_q0fw" // Alarm      Alarm2433_bot
#define BOTtoken "621836655:AAE5-8gVV-cLBK8FCAiIwlPHj_sA-vb1jdw" // 2433
int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime; //last time messages' scan has been done

TinyGsmClientSecure client(modem);
UniversalTelegramBot bot(BOTtoken, client);

void setup() {
  Serial.begin(9600);
  delay(10);
  // Set GSM module baud rate
  SerialAT.begin(9600);
  delay(3000);
  modem.sendAT(GF("+HTTPSSL=1")); //enable ssl. maybe don't need
  modem.waitResponse();
  if (!modem.hasSSL()) {
    Serial.println("SSL is not supported by this modem");
    //delay(10000);
  return;
  }
  //wait for network
  Serial.print(F("Waiting for network..."));
  if (!modem.waitForNetwork()) {
    Serial.println(" fail");
    delay(10000);
    return;
  }
  Serial.println(" OK");
  //connect to gprs
  Serial.print(F("Connecting to "));
  Serial.print(apn);
  if (!modem.gprsConnect(apn, user, pass)) {
    Serial.println(" fail");
    delay(10000);
    return;
  } else {Serial.println(" OK");}
  //not needed actually
  IPAddress local = modem.localIP();
  modem.waitResponse();
  Serial.println(local);
}

void loop() {
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    while(numNewMessages) {
      Serial.println("got response");
      for (int i=0; i<numNewMessages; i++) {
        bot.sendMessage(bot.messages[i].chat_id, bot.messages[i].text, "");
      }
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }
    Bot_lasttime = millis();
  }

}