Бот для мониторинга веб-сервисов за полчаса: telegram + bash + cron
Содержание:
Running
- Obtain a secret, used to connect to telegram servers.
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
- Obtain current telegram configuration. It can change (occasionally), so we encourage you to update it once per day.
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
- Generate a secret to be used by users to connect to your proxy.
head -c 16 /dev/urandom | xxd -ps
- Run :
./mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
… where:
- is the username. calls to drop privilegies.
- is the port, used by clients to connect to the proxy.
- is the local port. You can use it to get statistics from . Like . You can only get this stat via loopback.
- is the secret generated at step 3. Also you can set multiple secrets: .
- and are obtained at steps 1 and 2.
- is the number of workers. You can increase the number of workers, if you have a powerful server.
Also feel free to check out other options using .
- Generate the link with following schema: (or let the official bot generate it for you).
- Set received tag with arguments:
- Enjoy.
Notes and restrictions
- Message formatting (both Markdown and HTML) is disabled. You can easily add argument to function to enable it.example:
bot.send_message(message.chat.id, "Please click on (www.google.com)to search on Google",parse_mode="Markdown")
- You(Admins) should always use «reply» function, because bot will check of selected «message to reply».
- Storage is needed to save key-value pairs. First, I intended to delete which I’ve already answered, but then I decided to remove this, so you can answer any message from certain user and multiple times.
- Supported message types in reply: , , , , , , , .
- To block a user simply type and to unblock a user simply type
- If you dont need these features then you can simply use the original version of the bot which was made by Groosha. Open the terminal and enter
- All the text files are mentioned in config.py except blank.txt which is used somewhere in between the code.
** I will not recommend you to change the name or the location of the text files. But it’s up to you! ** -
You can use the command to view all the commands which you can use an admin
Что такое Serverless в самом бытовом понимании?
Не буду очень глубоко уходить в дебри, на Хабре регулярно появляются обзорные статьи на эту тему. Это возможность разместить в облаке функцию, на каком-то из поддерживаемых платформой языков программирования, задать условие её срабатывания — и всё. Когда случится триггер — поднимется виртуальное окружение, в нем отработает функция, и выключится. Вместе с окружением.
В чем преимущества такого подхода?
Безопасность
Вы получаете безопасное изолированное окружение с последней версией компилятора / интерпретатора.
Вместо того, чтобы следить за обновлением пакетов на настоящей ОС в Виртуальной машине, заниматься настройкой политик безопасности и файрволла — вы загружаете программу на сервер, и она работает.
Стабильность и отказоустойчивость
Вместо того чтобы конфигурировать pm2, настраивать политику перезагрузок, следить за утечкой памяти и постигать нюансы деплоя — да, вы просто загружаете программу на сервер, а всё остальное берёт на себя провайдер услуги.
Цена, особенно в условиях домашних малонагруженных проектов
При тарификации учитывается объём памяти, резервируемый под функцию за время её исполнения и количество вызовов. Согласно 10 000 000 запусков функции, работающей 800ms с ограничением по памяти 512мб будут стоить 3 900₽.
Да, 4.6 копеек. Плюс я не буду тратить время на настройки, что ещё приятней. Никаких правил для pm2, никакой актуализации Dockerfile или окружения, и вишенкой на торте — SLA 99,9.
Из пока нерешённых задач (но, полагаю, это вопрос времени) — привязка внешних доменов, а так же тонкая настройка http методов, которые служат триггером функции. Сейчас http триггер срабатывает на любой из DELETE, GET, HEAD, OPTIONS, PATCH, POST или PUT запросов на авто-генерируемую точку входа типа https://functions.yandexcloud.net/xxxxxxxxxxxxxxxx.
Из хороших новостей — это полноценный https, который отвечает всем требованиям Telegram для работы с api через webHooks. Но у AWS Lambda есть дополнения в виде API Gateway, да и сама настройка триггера шире, если вам это нужно.
Очевидное ограничение самого serverless подхода, не зависимо от платформы — пользоваться приходится ровно тем, что дают. Написать код на неподдерживаемых языках программирования или использовать нестандартные параметры компилятора/интерпретатора вы не сможете. Также возможны дополнительные призванные защитить всех участников процесса разработки.
Как создать .js файл, чтобы работать в Яндекс.Облаке?
Краткий гайд через веб интерфейс:
- создаём Функцию
- создаём в веб интерфейсе файл с любым именем и расширением js
- выбираем интерпретатор — nodejs10 или nodejs12
- в файле пишем функцию с одним параметром в exports.myFunction (ну, в произвольное поле в exports)
- указываем таймаут работы функции, оперативную память (128МБ-1024МБ с шагом в 128МБ), точку входа (имяфайла.myFunction)
- делаем функцию публичной
Функция написанная в файле может:
Получить данные http запроса через входящий параметр:
функция не получает request в чистом виде, и конечно же не управляет ходом запроса — она получает в своём единственном параметре с информацией о запросе:
Как поднять собственный MTProto server для Telegram?
: поддерживает спонсорские каналы; поддерживает IPv6; прост в установке.
: есть проблемы с клиентами Android (не отправляются сообщения); десктоп-клиенты Telegram работают отлично.
Java: требуется JRE 8 или JDK 8 (на версии 9 и выше не будет работать).
: использует много ресурсов процессора; поддерживает спонсорские каналы; работает стабильно.
Системные требования:
- VDS/VPS сервер, находящийся в любой стране, в которой Телеграм не заблокирован;
- Linux OS: Ubuntu 14.04+, CentOS 6+, Debian 8+;
- корневой доступ через SSH.
Создаем MTProto server
Нам нужен только сервер с установленным Docker’ом и доступом в интернет, и 443-ий порт должен быть свободным. Для запуска прокси все, что вам нужно сделать, это выполнить команду:
Журнал контейнера доступен по команде:
Он будет содержать сведения, которые потребуются для вставки в приложение Телеграмм при регистрации вашего прокси в боте @MTProxyBot:
Параметры IP и port могут быть определены ошибочно — проследите за этим, и при необходимости исправьте. Также, обязательно исправьте ссылки, если вы решите запустить прокси-сервер на другом порту, отличном от 443.
Secret — это обязательный параметр конфигурации: он будет создан автоматически при запуске контейнера, и будет сохраняться при обновлении.
Регистрируем свой MTProto прокси в Телеграме
После того, как ваш MTProxy сервер запущен, откройте в мессенджере диалог с @MTProxybot и зарегистрируйте свой прокси в Телеграме, чтобы получить доступ к статистике использования и монетизации. @MTProxybot — это официальный бот для владельцев MTProxy. Порядок действий:
- Отправить команду /start.
- Затем команду /newproxy — для регистрации нового МТПрото.
- Отправить адрес в формате «host:port».
Настраиваем конфигурацию MTProxy server
Если необходимо задать секретный ключ вручную (например, при развертывании нескольких прокси-серверов с балансировкой нагрузки DNS), можно задать переменную SECRET в виде 16-байтового числа в шестнадцатеричной системе:
Для символов необходимо использовать нижний регистр. Для генерации числа воспользуйтесь одной из Linux-команд:
MTProto поддерживает задание сразу нескольких различных ключей для пользовательских групп, максимум до 16 параметров. Можно указать их явно в переменной SECRET в виде шестнадцатеричных строк, разделенных запятыми:
Либо можно разрешить контейнеру автоматически создавать “секреты”, используя переменную SECRET_COUNT (нужно указать количество генерируемых строк).
Обновление MTProto server
Команда Telegram пообещала вносить минимальное количество изменений, но тем не менее, рекомендуется делать обновление прокси-сервера один раз в сутки. Перечень команд для обновления:
Статистика и производительность MTProxy
Один рабочий процесс рассчитан на обработку нескольких десятков тысяч клиентских подключений. Для оптимальной производительности это количество искусственно ограничено до 60 000 соединений на одно ядро ЦПУ. По умолчанию запускается два рабочих процесса. Если ваш прокси рассчитан на большое число подключений, обязательно настройте WORKERS переменную, увеличив количество процессов. Однако не стоит запускать прокси-процессов больше, чем ядер в процессоре.
Можно просматривать основные метрики работы MTProto прокси сервера на localhost:
Если прокси-сервер запущен с параметром , для получения статистики выполните команду:
Если прокси запущен с пробрасыванием портов, выполните другую команду:
Доступные метрики:
- ready_targets — количество основных серверов Telegram, к которым будет пытаться подключиться прокси.
- active_targets — количество основных серверов Telegram, к которым фактически подключен прокси. Должна быть равна ready_targets.
- total_special_connections — количество входящих клиентских подключений к MTProxy.
- total_max_special_connections — верхний предел входящих подключений к MTProxy. Равен 60 000, умноженные на количество процессов WORKERS.
NETWORK OPTIONS
CURLOPT_URL
URL to work on. See CURLOPT_URL
CURLOPT_PATH_AS_IS
Disable squashing /../ and /./ sequences in the path. See CURLOPT_PATH_AS_IS
CURLOPT_PROTOCOLS
Allowed protocols. See CURLOPT_PROTOCOLS
CURLOPT_REDIR_PROTOCOLS
Protocols to allow redirects to. See CURLOPT_REDIR_PROTOCOLS
CURLOPT_DEFAULT_PROTOCOL
Default protocol. See CURLOPT_DEFAULT_PROTOCOL
CURLOPT_PROXY
Proxy to use. See CURLOPT_PROXY
CURLOPT_PRE_PROXY
Socks proxy to use. See CURLOPT_PRE_PROXY
CURLOPT_PROXYPORT
Proxy port to use. See CURLOPT_PROXYPORT
CURLOPT_PROXYTYPE
Proxy type. See CURLOPT_PROXYTYPE
CURLOPT_NOPROXY
Filter out hosts from proxy use. CURLOPT_NOPROXY
CURLOPT_HTTPPROXYTUNNEL
Tunnel through the HTTP proxy. CURLOPT_HTTPPROXYTUNNEL
CURLOPT_CONNECT_TO
Connect to a specific host and port. See CURLOPT_CONNECT_TO
CURLOPT_SOCKS5_AUTH
Socks5 authentication methods. See CURLOPT_SOCKS5_AUTH
CURLOPT_SOCKS5_GSSAPI_SERVICE
Socks5 GSSAPI service name. CURLOPT_SOCKS5_GSSAPI_SERVICE
CURLOPT_SOCKS5_GSSAPI_NEC
Socks5 GSSAPI NEC mode. See CURLOPT_SOCKS5_GSSAPI_NEC
CURLOPT_PROXY_SERVICE_NAME
Proxy authentication service name. CURLOPT_PROXY_SERVICE_NAME
CURLOPT_HAPROXYPROTOCOL
Send an HAProxy PROXY protocol v1 header. See CURLOPT_HAPROXYPROTOCOL
CURLOPT_SERVICE_NAME
Authentication service name. CURLOPT_SERVICE_NAME
CURLOPT_INTERFACE
Bind connection locally to this. See CURLOPT_INTERFACE
CURLOPT_LOCALPORT
Bind connection locally to this port. See CURLOPT_LOCALPORT
CURLOPT_LOCALPORTRANGE
Bind connection locally to port range. See CURLOPT_LOCALPORTRANGE
CURLOPT_DNS_CACHE_TIMEOUT
Timeout for DNS cache. See CURLOPT_DNS_CACHE_TIMEOUT
CURLOPT_DNS_USE_GLOBAL_CACHE
OBSOLETE Enable global DNS cache. See CURLOPT_DNS_USE_GLOBAL_CACHE
CURLOPT_DOH_URL
Use this DOH server for name resolves. See CURLOPT_DOH_URL
CURLOPT_BUFFERSIZE
Ask for alternate buffer size. See CURLOPT_BUFFERSIZE
CURLOPT_PORT
Port number to connect to. See CURLOPT_PORT
CURLOPT_TCP_FASTOPEN
Enable TFO, TCP Fast Open. See CURLOPT_TCP_FASTOPEN
CURLOPT_TCP_NODELAY
Disable the Nagle algorithm. See CURLOPT_TCP_NODELAY
CURLOPT_ADDRESS_SCOPE
IPv6 scope for local addresses. See CURLOPT_ADDRESS_SCOPE
CURLOPT_TCP_KEEPALIVE
Enable TCP keep-alive. See CURLOPT_TCP_KEEPALIVE
CURLOPT_TCP_KEEPIDLE
Idle time before sending keep-alive. See CURLOPT_TCP_KEEPIDLE
CURLOPT_TCP_KEEPINTVL
Interval between keep-alive probes. See CURLOPT_TCP_KEEPINTVL
CURLOPT_UNIX_SOCKET_PATH
Path to a Unix domain socket. See CURLOPT_UNIX_SOCKET_PATH
CURLOPT_ABSTRACT_UNIX_SOCKET
Path to an abstract Unix domain socket. See CURLOPT_ABSTRACT_UNIX_SOCKET
Unix and Linux curl command with proxy syntax
The syntax is:
## Set the proxy address of your uni/company/vpn network ## export http_proxy=http://your-ip-address:port ## http_proxy with username and password export http_proxy=http://user:password@your-proxy-ip-address:port ## HTTPS version ## export https_proxy=https://your-ip-address:port export https_proxy=https://user:password@your-proxy-ip-address:port |
Another option is to pass the -x option to the curl command. To use the specified proxy:
curl -x <protocol://user:password@proxyhost:port> url --proxy <protocol://user:password@proxyhost:port> url --proxy http://user:password@Your-Ip-Here:Port url -x http://user:password@Your-Ip-Here:Port url |
HTTP OPTIONS
CURLOPT_AUTOREFERER
Automatically set Referer: header. See CURLOPT_AUTOREFERER
CURLOPT_ACCEPT_ENCODING
Accept-Encoding and automatic decompressing data. See CURLOPT_ACCEPT_ENCODING
CURLOPT_TRANSFER_ENCODING
Request Transfer-Encoding. See CURLOPT_TRANSFER_ENCODING
CURLOPT_FOLLOWLOCATION
Follow HTTP redirects. See CURLOPT_FOLLOWLOCATION
CURLOPT_UNRESTRICTED_AUTH
Do not restrict authentication to original host. CURLOPT_UNRESTRICTED_AUTH
CURLOPT_MAXREDIRS
Maximum number of redirects to follow. See CURLOPT_MAXREDIRS
CURLOPT_POSTREDIR
How to act on redirects after POST. See CURLOPT_POSTREDIR
CURLOPT_PUT
Issue an HTTP PUT request. See CURLOPT_PUT
CURLOPT_POST
Issue an HTTP POST request. See CURLOPT_POST
CURLOPT_POSTFIELDS
Send a POST with this data. See CURLOPT_POSTFIELDS
CURLOPT_POSTFIELDSIZE
The POST data is this big. See CURLOPT_POSTFIELDSIZE
CURLOPT_POSTFIELDSIZE_LARGE
The POST data is this big. See CURLOPT_POSTFIELDSIZE_LARGE
CURLOPT_COPYPOSTFIELDS
Send a POST with this data — and copy it. See CURLOPT_COPYPOSTFIELDS
CURLOPT_HTTPPOST
Multipart formpost HTTP POST. See CURLOPT_HTTPPOST
CURLOPT_REFERER
Referer: header. See CURLOPT_REFERER
CURLOPT_USERAGENT
User-Agent: header. See CURLOPT_USERAGENT
CURLOPT_HTTPHEADER
Custom HTTP headers. See CURLOPT_HTTPHEADER
CURLOPT_HEADEROPT
Control custom headers. See CURLOPT_HEADEROPT
CURLOPT_PROXYHEADER
Custom HTTP headers sent to proxy. See CURLOPT_PROXYHEADER
CURLOPT_HTTP200ALIASES
Alternative versions of 200 OK. See CURLOPT_HTTP200ALIASES
CURLOPT_COOKIE
Cookie(s) to send. See CURLOPT_COOKIE
CURLOPT_COOKIEFILE
File to read cookies from. See CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR
File to write cookies to. See CURLOPT_COOKIEJAR
CURLOPT_COOKIESESSION
Start a new cookie session. See CURLOPT_COOKIESESSION
CURLOPT_COOKIELIST
Add or control cookies. See CURLOPT_COOKIELIST
CURLOPT_ALTSVC
Specify the Alt-Svc: cache file name. See CURLOPT_ALTSVC
CURLOPT_ALTSVC_CTRL
Enable and configure Alt-Svc: treatment. See CURLOPT_ALTSVC_CTRL
CURLOPT_HTTPGET
Do an HTTP GET request. See CURLOPT_HTTPGET
CURLOPT_REQUEST_TARGET
Set the request target. CURLOPT_REQUEST_TARGET
CURLOPT_HTTP_VERSION
HTTP version to use. CURLOPT_HTTP_VERSION
CURLOPT_HTTP09_ALLOWED
Allow HTTP/0.9 responses. CURLOPT_HTTP09_ALLOWED
CURLOPT_IGNORE_CONTENT_LENGTH
Ignore Content-Length. See CURLOPT_IGNORE_CONTENT_LENGTH
CURLOPT_HTTP_CONTENT_DECODING
Disable Content decoding. See CURLOPT_HTTP_CONTENT_DECODING
CURLOPT_HTTP_TRANSFER_DECODING
Disable Transfer decoding. See CURLOPT_HTTP_TRANSFER_DECODING
CURLOPT_EXPECT_100_TIMEOUT_MS
100-continue timeout. See CURLOPT_EXPECT_100_TIMEOUT_MS
CURLOPT_TRAILERFUNCTION
Set callback for sending trailing headers. See CURLOPT_TRAILERFUNCTION
CURLOPT_TRAILERDATA
Custom pointer passed to the trailing headers callback. See CURLOPT_TRAILERDATA
CURLOPT_PIPEWAIT
Wait on connection to pipeline on it. See CURLOPT_PIPEWAIT
CURLOPT_STREAM_DEPENDS
This HTTP/2 stream depends on another. See CURLOPT_STREAM_DEPENDS
CURLOPT_STREAM_DEPENDS_E
This HTTP/2 stream depends on another exclusively. See CURLOPT_STREAM_DEPENDS_E
CURLOPT_STREAM_WEIGHT
Set this HTTP/2 stream’s weight. See CURLOPT_STREAM_WEIGHT
Linux use curl command with proxy
First set the http_proxy:
## proxy server, 202.54.1.1, port: 3128, user: foo, password: bar ## export http_proxy=http://foo:bar@202.54.1.1:3128 export https_proxy=$http_proxy ## Use the curl command ## curl -I https://www.cyberciti.biz curl -v -I https://www.cyberciti.biz |
Sample outputs:
* Rebuilt URL to: www.cyberciti.biz/ * Trying 202.54.1.1... * Connected to 1202.54.1.1 (202.54.1.1) port 3128 (#) * Proxy auth using Basic with user 'foo' > HEAD HTTP://www.cyberciti.biz/ HTTP/1.1 > Host: www.cyberciti.biz > Proxy-Authorization: Basic x9VuUml2xm0vdg93MtIz > User-Agent: curl/7.43.0 > Accept: */* > Proxy-Connection: Keep-Alive > < HTTP/1.1 200 OK HTTP/1.1 200 OK < Server: nginx Server: nginx < Date: Sun, 17 Jan 2016 11:49:21 GMT Date: Sun, 17 Jan 2016 11:49:21 GMT < Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8 < Vary: Accept-Encoding Vary: Accept-Encoding < X-Whom: Dyno-l1-com-cyber X-Whom: Dyno-l1-com-cyber < Vary: Cookie Vary: Cookie < Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/" Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/" < X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN < X-Content-Type-Options: nosniff X-Content-Type-Options: nosniff < X-XSS-Protection: 1; mode=block X-XSS-Protection: 1; mode=block < X-Cache: MISS from server1 X-Cache: MISS from server1 < X-Cache-Lookup: MISS from server1:3128 X-Cache-Lookup: MISS from server1:3128 < Connection: keep-alive Connection: keep-alive < * Connection # to host 10.12.249.194 left intact |
In this example, I’m downloading a pdf file: OR use the -x option: Sample outputs:
Fig.01: curl in action (click to enlarge)
SSL and SECURITY OPTIONS
CURLOPT_SSLCERT
Client cert. See CURLOPT_SSLCERT
CURLOPT_SSLCERT_BLOB
Client cert memory buffer. See CURLOPT_SSLCERT_BLOB
CURLOPT_PROXY_SSLCERT
Proxy client cert. See CURLOPT_PROXY_SSLCERT
CURLOPT_PROXY_SSLCERT_BLOB
Proxy client cert memory buffer. See CURLOPT_PROXY_SSLCERT_BLOB
CURLOPT_SSLCERTTYPE
Client cert type. See CURLOPT_SSLCERTTYPE
CURLOPT_PROXY_SSLCERTTYPE
Proxy client cert type. See CURLOPT_PROXY_SSLCERTTYPE
CURLOPT_SSLKEY
Client key. See CURLOPT_SSLKEY
CURLOPT_SSLKEY_BLOB
Client key memory buffer. See CURLOPT_SSLKEY_BLOB
CURLOPT_PROXY_SSLKEY
Proxy client key. See CURLOPT_PROXY_SSLKEY
CURLOPT_PROXY_SSLKEY_BLOB
Proxy client key. See CURLOPT_PROXY_SSLKEY_BLOB
CURLOPT_SSLKEYTYPE
Client key type. See CURLOPT_SSLKEYTYPE
CURLOPT_PROXY_SSLKEYTYPE
Proxy client key type. See CURLOPT_PROXY_SSLKEYTYPE
CURLOPT_KEYPASSWD
Client key password. See CURLOPT_KEYPASSWD
CURLOPT_PROXY_KEYPASSWD
Proxy client key password. See CURLOPT_PROXY_KEYPASSWD
CURLOPT_SSL_ENABLE_ALPN
Enable use of ALPN. See CURLOPT_SSL_ENABLE_ALPN
CURLOPT_SSL_ENABLE_NPN
Enable use of NPN. See CURLOPT_SSL_ENABLE_NPN
CURLOPT_SSLENGINE
Use identifier with SSL engine. See CURLOPT_SSLENGINE
CURLOPT_SSLENGINE_DEFAULT
Default SSL engine. See CURLOPT_SSLENGINE_DEFAULT
CURLOPT_SSL_FALSESTART
Enable TLS False Start. See CURLOPT_SSL_FALSESTART
CURLOPT_SSLVERSION
SSL version to use. See CURLOPT_SSLVERSION
CURLOPT_PROXY_SSLVERSION
Proxy SSL version to use. See CURLOPT_PROXY_SSLVERSION
CURLOPT_SSL_VERIFYHOST
Verify the host name in the SSL certificate. See CURLOPT_SSL_VERIFYHOST
CURLOPT_PROXY_SSL_VERIFYHOST
Verify the host name in the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYPEER
Verify the SSL certificate. See CURLOPT_SSL_VERIFYPEER
CURLOPT_PROXY_SSL_VERIFYPEER
Verify the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYPEER
CURLOPT_SSL_VERIFYSTATUS
Verify the SSL certificate’s status. See CURLOPT_SSL_VERIFYSTATUS
CURLOPT_CAINFO
CA cert bundle. See CURLOPT_CAINFO
CURLOPT_PROXY_CAINFO
Proxy CA cert bundle. See CURLOPT_PROXY_CAINFO
CURLOPT_ISSUERCERT
Issuer certificate. See CURLOPT_ISSUERCERT
CURLOPT_ISSUERCERT_BLOB
Issuer certificate memory buffer. See CURLOPT_ISSUERCERT_BLOB
CURLOPT_PROXY_ISSUERCERT
Proxy issuer certificate. See CURLOPT_PROXY_ISSUERCERT
CURLOPT_PROXY_ISSUERCERT_BLOB
Proxy issuer certificate memory buffer. See CURLOPT_PROXY_ISSUERCERT_BLOB
CURLOPT_CAPATH
Path to CA cert bundle. See CURLOPT_CAPATH
CURLOPT_PROXY_CAPATH
Path to proxy CA cert bundle. See CURLOPT_PROXY_CAPATH
CURLOPT_CRLFILE
Certificate Revocation List. See CURLOPT_CRLFILE
CURLOPT_PROXY_CRLFILE
Proxy Certificate Revocation List. See CURLOPT_PROXY_CRLFILE
CURLOPT_CERTINFO
Extract certificate info. See CURLOPT_CERTINFO
CURLOPT_PINNEDPUBLICKEY
Set pinned SSL public key . See CURLOPT_PINNEDPUBLICKEY
CURLOPT_PROXY_PINNEDPUBLICKEY
Set the proxy’s pinned SSL public key. See CURLOPT_PROXY_PINNEDPUBLICKEY
CURLOPT_RANDOM_FILE
Provide source for entropy random data. See CURLOPT_RANDOM_FILE
CURLOPT_EGDSOCKET
Identify EGD socket for entropy. See CURLOPT_EGDSOCKET
CURLOPT_SSL_CIPHER_LIST
Ciphers to use. See CURLOPT_SSL_CIPHER_LIST
CURLOPT_PROXY_SSL_CIPHER_LIST
Proxy ciphers to use. See CURLOPT_PROXY_SSL_CIPHER_LIST
CURLOPT_TLS13_CIPHERS
TLS 1.3 cipher suites to use. See CURLOPT_TLS13_CIPHERS
CURLOPT_PROXY_TLS13_CIPHERS
Proxy TLS 1.3 cipher suites to use. See CURLOPT_PROXY_TLS13_CIPHERS
CURLOPT_SSL_SESSIONID_CACHE
Disable SSL session-id cache. See CURLOPT_SSL_SESSIONID_CACHE
CURLOPT_SSL_OPTIONS
Control SSL behavior. See CURLOPT_SSL_OPTIONS
CURLOPT_PROXY_SSL_OPTIONS
Control proxy SSL behavior. See CURLOPT_PROXY_SSL_OPTIONS
CURLOPT_KRBLEVEL
Kerberos security level. See CURLOPT_KRBLEVEL
CURLOPT_GSSAPI_DELEGATION
Disable GSS-API delegation. See CURLOPT_GSSAPI_DELEGATION