Curl request z PHP do node.js – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Curl request z PHP do node.js – JavaScript, AJAX, jQuery – Fórum – Programujte.comCurl request z PHP do node.js – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

mario
~ Anonymní uživatel
18 příspěvků
12. 1. 2022   #1
-
0
-

Zdravím.

Potřebuju získat data z API, které komunikuje jen přes TOR. Lokálně na portu 9050, běží TOR-proxy.  V PHP je možné získat data z api za pomocí option:

CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME

Celý PHP Kód: 

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_PROXY, '127.0.0.1:9050');
curl_setopt($curl, CURLOPT_URL, "http://neco.onion");
echo(curl_exec($curl));

V node.js je pak možné použít TOR proxy, ale jen pro stránky s normální doménou(ne .onion) 

const https = require('https');
const { SocksProxyAgent } = require('socks-proxy-agent');

const agent = new SocksProxyAgent('socks5h://127.0.0.1:9050');

https.get('https://ifconfig.me', {
  agent
}, res => {
  res.pipe(process.stdout);
});

Je možné nastavit něco jako "CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5_HOSTNAME" v node.js. Předem moc děkuji.

Nahlásit jako SPAM
IP: 78.80.244.–
gna
~ Anonymní uživatel
1891 příspěvků
13. 1. 2022   #2
-
0
-

Mně to takhle funguje (i s .onion). Hlásí to nějakou chybu?

Nahlásit jako SPAM
IP: 213.211.51.–
mario
~ Anonymní uživatel
18 příspěvků
13. 1. 2022   #3
-
0
-

Javascript Kód 

const https = require('https');
const { SocksProxyAgent } = require('socks-proxy-agent');

const agent = new SocksProxyAgent('socks5h://127.0.0.1:9050');

https.get('https://nqieh33bhvzhm35l4qe4ifzbrbpxk4szwlu42wonqycvmqurlzptigyd.onion/api/v1/fees/recommended', {
    agent
}, res => {
    res.pipe(process.stdout);
});

vrací 

Emitted 'error' event on ClientRequest instance at:
    at onerror (*****/torapi/node_modules/agent-base/dist/src/index.js:117:21)
    at callbackError (*****/torapi/node_modules/agent-base/dist/src/index.js:136:17)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  options: {
    proxy: { host: '127.0.0.1', port: 9050, type: 5 },
    destination: {
      host: 'nqieh33bhvzhm35l4qe4ifzbrbpxk4szwlu42wonqycvmqurlzptigyd.onion',
      port: 443
    },
    command: 'connect',
    timeout: undefined
  }
}

Process finished with exit code 1

pokud se url změní z https na http odpověď vypadá takto

node:_http_client:158
    throw new ERR_INVALID_PROTOCOL(protocol, expectedProtocol);
    ^

TypeError [ERR_INVALID_PROTOCOL]: Protocol "http:" not supported. Expected "https:"
    at new NodeError (node:internal/errors:371:5)
    at new ClientRequest (node:_http_client:158:11)
    at request (node:https:353:10)
    at Object.get (node:https:387:15)
    at Object.<anonymous> (*****/torapi/index.js:6:7)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12) {
  code: 'ERR_INVALID_PROTOCOL'
}

PHP kód 

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_PROXY, '127.0.0.1:9050');
curl_setopt($curl, CURLOPT_URL, "http://nqieh33bhvzhm35l4qe4ifzbrbpxk4szwlu42wonqycvmqurlzptigyd.onion/api/v1/fees/recommended");
echo(curl_exec($curl));

vrací očekávanou odpověď API

{"fastestFee":3,"halfHourFee":3,"hourFee":3,"minimumFee":1}
Nahlásit jako SPAM
IP: 78.80.244.–
mario
~ Anonymní uživatel
18 příspěvků
13. 1. 2022   #4
-
0
-

#3 mario
Omlouvám se byla to úplná blbost. Pro http stránku místo https.get musí být http.get a url.

Nahlásit jako SPAM
IP: 78.80.244.–
gna
~ Anonymní uživatel
1891 příspěvků
14. 1. 2022   #5
-
0
-

Nevím, možná se zkus podívat jestli nemáš nějakou starší verzi těch knihoven.

Já jsem je instaloval až teď, takže mám poslední socks 2.6.1 a socks-proxy-agent 6.1.1 a chodí to.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý