Проблема в отправке запроса API Telegram
Всем привет! Я использую Telegram Api и отправляю простейший запрос
accsess_token = ...
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apn g,*/*;q=0.8,application/signed-exchange;v=b2',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109
Safari/537.36'
}
str_query = f'https://api.telegram.org/bot{accsess_token}/getMe'
resp = requests.get(str_query, proxies=proxies, headers=headers)
print(resp)
Дальше запускается скрипт.. думает долго и тут:
ConnectionError: HTTPSConnectionPool(host='api.telegram.org',
port=443): Max retries exceeded with url:
/bot1051933687:{accsess_token}/getMe (Caused by
NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object
at 0x7f8895a68278>: Failed to establish a new connection: [Errno 101] Network is unreachable',))
Далее я решил использовать прокси,соответственно,изменения в коде произошли такие
proxies = {
'https': '163.172.182.164:3128',
}
resp = requests.get(str_query,headers=headers, proxies=proxies)
Пробовал много прокси-серверов.. и у всех один ответ.. правда теперь скрипт отрабатывает быстро,точнее ошибка вылетает сразу же, а не как в первом случае,когда скрипт "думал" долго
ProxyError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max
retries exceeded with url: /bot1051933687:{accsess_token}/getMe (Caused by ProxyError('Cannot connect to proxy.',
OSError('Tunnel connection failed: 407 Proxy Authentication Required',)))
Подскажите, моя проблема в том что я так и не добрался до рабочего прокси или тут что-то другое?
Ответы (2 шт):
Автор решения: СuriousBoy
→ Ссылка
Внимательнее читайте документацию!
https://requests.readthedocs.io/en/master/user/advanced/#proxies
proxies = {
'https': 'socks5://54.38.195.161:55155',
}
Автор решения: Рустам Абдурасулов
→ Ссылка
PHP
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!empty($_POST['name']) && !empty($_POST['phone'])){
if (isset($_POST['name'])) {
if (!empty($_POST['name'])){
$name = strip_tags($_POST['name']);
$nameFieldset = "Имя пославшего: ";
}
}
if (isset($_POST['phone'])) {
if (!empty($_POST['phone'])){
$phone = strip_tags($_POST['phone']);
$phoneFieldset = "Телефон: ";
}
}
if (isset($_POST['theme'])) {
if (!empty($_POST['theme'])){
$theme = strip_tags($_POST['theme']);
$themeFieldset = "Тема:";
}
}
$token = "";
$chat_id = "";
$arr = array(
$nameFieldset => $name,
$phoneFieldset => $phone,
);
$txt = '';
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b> ".$value."%0A";
};
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
if ($sendToTelegram) {
echo '<p class="success" style="color: #18d26e";>Ваша заявка успешно отправлена!</p>';
return true;
} else {
echo '<p class="fail" style="color: red";><b>Ошибка. Сообщение не отправлено!</b></p>';
}
} else {
echo '<p class="fail" style="color: red";>Ошибка. Вы заполнили не все обязательные поля!</p>';
}
} else {
echo '<p class="success" style="color: #18d26e";>Спасибо за отправку вашего сообщения!</p>';
}
?>
/////////////////////////////
AJAX
$(document).ready(function () {
$(".form-element").submit(function () {
var formID = $(this).attr('id');
var formNm = $('#' + formID);
var message = $(formNm).find(".form-message");
var formTitle = $(formNm).find(".form-title");
$.ajax({
type: "POST",
url: './telegramform/php/send-message-to-telegram.php',
data: formNm.serialize(),
success: function (data) {
// Вывод сообщения об успешной отправке
message.html(data);
formTitle.css("display","none");
setTimeout(function(){
formTitle.css("display","block");
message.html('');
$('input').not(':button[type=submit], :button[type=hidden]').val('');
}, 3000);
},
error: function (jqXHR, text, error) {
// Вывод сообщения об ошибке отправки
message.html(error);
formTitle.css("display","none");
setTimeout(function(){
formTitle.css("display","block");
message.html('');
$('button').not(':button[type=submit], :button[type=hidden]').val('');
}, 3000);
}
});
return false;
});
});