Amir
2 سال پیش توسط Amir مطرح شد
1 پاسخ

ارسال درخواست cURL با پروکسی

سلام روزتون بخیر ،
من یه ربات تلگرام دارم که میخوام روی هاست داخلی اجراش کنم اما خب همونطور که میدونید تلگرام فیلتره ..
قبلا یه مقاله توی اینترنت دیدم که طرف میومد با اضافه کردن چند خط کد به cURL ، درخواست رو با پروکسی ارسال میکرد.
پروکسی با یکی از سایت های گوگل ساخته میشد دقیق یادم نیست هرچی میگردم دوباره پیداش نکردم اگه شما چنین روشی بلدید ممنون میشم بگید.

کد اصلی به صورت زیره :

function Post($method, $datas)
{
    $url = "https://api.telegram.org/bot" . API_KEY . $method;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datas));
    $res = curl_exec($ch);
    if (curl_error($ch)) {
      var_dump(curl_error($ch));
    } else {
      return $res;
    }
}

ثبت پرسش جدید
Amir
تخصص : برنامه نویس وب
@Blank 2 سال پیش مطرح شد
0

متاسفانه از کاربرای راکت آبی گرم نشد و این دومین سوال بی پاسخمه.
ولی تقریبا جواب رو پیدا کردم و روش ارسال ریکوئست به سرور تلگرام بدون نیار به SSL و با پروکسی رو میزارم تا شاید به درد رهگذری خورد.

در مرحله اول وارد این سایت بشید و روی new project بزنید
بعدش تمام کد هارو پاک کنید و کد های زیر رو جایگزین کنید :

function doGet(e) {

  if(typeof e !== 'undefined'){
    return requestHandler(e);
  }
}

function doPost(e) {
  if(typeof e !== 'undefined'){
    return requestHandler(e);
  }  
}

function requestHandler(e){
  var res = handleRequest(e);
  return ContentService.createTextOutput(res);
}

function handleRequest(e) {
  if(typeof e.parameter.bot_token === 'undefined'){
    return 'Error! Bot token not provided';
  } else if(typeof e.parameter.method === 'undefined') {
    return 'Error! Method name not provided';
  }
  var bot_token = e.parameter.bot_token;
  var tg_method = e.parameter.method;

  var data = {
    "method": "post",
    "muteHttpExceptions": true,
    "contentType": "application/json",
  }
  if(typeof e.parameter.args !== 'undefined'){
    var args = e.parameter.args;
    data.payload = args;
  }
  //return e.parameter.args;
  var res = UrlFetchApp.fetch('https://api.telegram.org/bot' + bot_token + '/' + tg_method, data);
  Logger.log(res.getContentText());
  return res.getContentText();
}

خب هالا روی آیکون save بالای صفحه بزنید و بعدش روی گزینه deploy و سپس گزینه new deployment را انتخاب کنید.
روی تنظیمات جلوی Select type بزنید و گزینه web app رو انتخاب کنید.
فیلد اول خالی باشه فیلد دوم روی me و فیلد سوم روی anyone و در آخر روی deploy بزنید.
اکانت خودتون رو تایید کنید و سپس به شما یه لینک نمایش داده میشه ، اون لینک رو کپی کنید و درخواست های cURL رو به اون بفرستید

نمونه کد به صورت زیر:

$parameters = [
    "chat_id" => 2079091905,
    "text"    => "Hello world :)"
];

$args = array(
   'bot_token'  => "5281589248:AAH9jE4i6eDyl937C7SUMe9Gmz8ZgYbT2T4",
   'method'     => "sendMessage",
   'args'       => json_encode($parameters)
);
$handle = curl_init("https://script.google.com/macros/s/AKfycbypTulMTU86jMkNRENtqcWNH4L-pLrmSrCqoBphjmB7El9Dj3MHmUivcludPIHoCffQ/exec");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $args);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($handle);
echo $result;
  • لینک و توکن ربات جایگزین بشه

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام