2

Есть ли простой клиент командной строки, который будет вызываться примерно так:

http2https --listen localhost:80 --connect example.com:443

что позволило бы мне эффективно подключиться к https://example.com , фактически подключившись к http://localhost? Это должно было бы работать на Windows.

Я попробовал stunnel, но, похоже, он не работает.

Обновить:

Вот вывод stunnel.exe -c -r google.com:443 -d 127.0.0.1:8888

No limit detected for the number of clients
stunnel 4.56 on x86-pc-msvc-1500 platform
Compiled/running with OpenSSL 1.0.1e-fips 11 Feb 2013
Threading:WIN32 Sockets:SELECT,IPv6 SSL:ENGINE,OCSP,FIPS
Reading configuration from file -c
Cannot read configuration

Syntax:
stunnel [ [-install | -uninstall] [-quiet] [<filename>] ] | -help | -version | -sockets
    <filename>  - use specified config file
    -install    - install NT service
    -uninstall  - uninstall NT service
    -quiet      - don't display a message box on success
    -help       - get config file help
    -version    - display version and defaults
    -sockets    - display default socket options

Server is down

3 ответа3

3

stunnel - это то, что вам нужно:

sudo stunnel -c -r google.com:443 -d 127.0.0.1:8888

Это устанавливает сеанс SSL для удаленной стороны (в данном случае Google) и создает прослушиватель на локальном порту 8888. Вы можете использовать 80, если у вас еще нет слушателя.

Затем вы получаете доступ к localhost:8888 и получаете удаленный сайт.

Если вы используете Windows, то параметры командной строки не поддерживаются, поэтому создайте файл stunnel.conf с параметрами внутри:

[remote]
accept = 8888
connect = google.com:443

Затем позвоните с

stunnel -c stunnel.conf
3

У Пола это было почти правильно, но под Windows вам нужно добавить client = yes в файл конфигурации, так как -c не является параметром командной строки для Windows Stunnel.

У меня работает следующий конфиг

[remote]
client = yes
accept = 8888
connect = google.com:443

В итоге я использовал tstunnel.exe, а не stunnel.exe, так как это версия командной строки для Windows в Windows. Вот команда:

tstunnel remote_stunnel.conf
2

Вот скрипт node.js, который делает то, что я хочу:

var http = require('http');
var https = require('https');

http.createServer(function (req, resp) {
    var h = req.headers;
    h.host = "www.example.com";
    var req2 = https.request({ host: h.host, port: 443, path: req.url, method: req.method, headers: h }, function (resp2) {
        resp.writeHead(resp2.statusCode, resp2.headers);
        resp2.on('data', function (d) { resp.write(d); });
        resp2.on('end', function () { resp.end(); });
    });
    req.on('data', function (d) { req2.write(d); });
    req.on('end', function () { req2.end(); });
}).listen(9999, "127.0.0.1");
console.log('Server running at http://127.0.0.1:9999/');

Хост и локальный порт оба жестко запрограммированы, но было бы достаточно легко сделать их параметрами командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .