Open RealCoolmax opened 1 year ago
Есть такое, я рассчитывал что прокси будет в виде домена, например: http://domain.com + /http://image.tmdb.org/t/p/w200//o9xtEAlNb0wWql0EnT2SmaLZ1qa.jpg
Если у вас свой адрес, по типа http://domain.com/image.php?url= то вам придется обрезать лишний слеш впереди.
Нет у меня стандартный Squid. Обрезать там что либо не получится.
Окей, тогда пример адреса, может можно будет проверить.
Не совсем понял: пример какого адреса? У меня Squid поднят на http://proxy.domain.ru:3128 В настройках вбиваю этот адрес, запрос приходит, но впереди адреса стоит "/", на него мой Squid и ругается.
Ну по правилам веба, после домена ставится слеш, а иначе адрес будет неверный. Но вот адрес с портом я не думал что так можно)) Разве оно так будет работать? http://proxy.domain.ru:3128http://image.tmdb.org/t/p/w200//o9xtEAlNb0wWql0EnT2SmaLZ1qa.jpg
Тут речь-то не совсем про веб :) Тут ведь отправляется запрос к прокси серверу. Кроме того, у кого в качестве прокси стоит какой-нибудь http-сервер может в настройках добавить завершающий слеш.
Полноценный socket5 или другой протокол в лампе не работает. Только веб протокол, поэтому слеш обязательно.
Нет, никаких соксов, обычный прокси-сервер. Обычный GET запрос. Примерно так я себе представляю: const http = require("http");
const options = { host: "proxy", port: 8080, path: "http://www.google.com", headers: { Host: "www.google.com" } };
http.get(options, (res) => { console.log(res); res.pipe(process.stdout); });
Ну и как по вашему я заведу node,js в браузере? Повторюсь, доступен только javascript метод и только по типу http://proxy.domain.ru:3128/http://image.tmdb.org/t/p/w200//o9xtEAlNb0wWql0EnT2SmaLZ1qa.jpg
А что с вариантом описанным мною выше? Ведущий "/" добавляется уже в скрипте. Что если сделать для обычных прокси в настройках "http://proxy.domain.ru:3128", а для тех кому нужен этот "/" дописать его в настройках "http://proxy.somian.ru/". От Лампы я получаю корректный GET запрос, мешает его отработать только "/" перед http... Можно увидеть кусок кода, где формируется запрос к прокси?
Ну и как по вашему я заведу node,js в браузере? Повторюсь, доступен только javascript метод и только по типу http://proxy.domain.ru:3128/http://image.tmdb.org/t/p/w200//o9xtEAlNb0wWql0EnT2SmaLZ1qa.jpg
А если убрать слешь вот тут ) + '/' + base : base;
Думаю это и есть решение, а тем кому надо будут прописывать его вручную
Думаю это и есть решение, а тем кому надо будут прописывать его вручную
Тупость никто не отменял)) Так и будут писать, прописал домен, а не чего не работает.
Ведущий "/" добавляется уже в скрипте.
Так устроены сервера, впереди всегда есть слеш.
Что если сделать для обычных прокси в настройках "http://proxy.domain.ru:3128"
Вы на своем сервере хоть пробовали запустить без слеша?
Вы на своем сервере хоть пробовали запустить без слеша?
Не понял вопрос. Что запустить на своём сервере?
Не понял вопрос. Что запустить на своём сервере?
Где стоит прокси сервер? Как к нему обратится? По какому адресу?
По какому адресу?
Как-то не хотелось бы светить свой прокси в отрытых источниках. А кусочек лога приводил в первом сообщении.
Вот пример как должен работать прокси сервер: http://imagetmdb.cub.watch/http://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
А теперь представим, что мы не будем подставлять слеш, пробуем: http://imagetmdb.cub.watchhttp://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
Других вариантов нету и не будет.
Хорошо, я понял. Придётся поднимать nginx и настраивать его на работу в качестве прокси, вместо того чтобы использовать стандартный Squid.
Спасибо!
Не я тут диктую условия)) Диктует их javascript, а в javascript нету технических способов использовать прокси с логином и паролем, кроме как запрашивать тупо адрес и подставлять ему параметры другого адреса.
Я крайне слабо ориентируюсь в JS, но почему-то был уверен, что есть какой-то класс alaProxy, которому можно передать адрес прокси и строку адреса. Очевидно я ошибался. Придётся огород городить :)
Не я тут диктую условия)) Диктует их javascript, а в javascript нету технических способов использовать прокси с логином и паролем, кроме как запрашивать тупо адрес и подставлять ему параметры другого адреса.
вроде что то подобие нашёл: на гитхабе пример из stackoverflow
вроде что то подобие нашёл: на гитхабе
Это для node.js, а он серверный.
Других вариантов нету и не будет.
Я правильно понимаю, что вы свою версию прокси сделали с использованием PHP?
Да. Если надо, могу скинуть.
Да. Если надо, могу скинуть.
Да, было бы интересно посмотреть. Если напрямую с nginx не получится...
index.php
<?php
header('Access-Control-Allow-Origin: *');
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( "short_open_tag", 1 );
$uri = substr($_SERVER['REQUEST_URI'], 1);
$exp = explode('/', $uri);
$med = array_shift($exp);
$url = implode('/', $exp);
if($med == 'api'){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT,60);
$html = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($code == 200){
header("HTTP/1.1 200 OK");
echo $html;
}
else{
header("HTTP/1.0 404 Not Found");
}
}
elseif($med == 'img'){
echo file_get_contents($url);
}
else{
header("HTTP/1.0 404 Not Found");
}
?>
.htaccess
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
ErrorDocument 404 /index.php
ErrorDocument 403 /index.php
RewriteCond %{REQUEST_FILENAME} !(index\.php)
RewriteRule ^(.*)$ /index.php/$1
Пример изображений: http://domain.com/img/http://imagetmdb.cub.watch/http://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
Вариант, конечно, интересный, с таким доступом к прокси, но сомнительный. Я поднял свой локальный прокси и VPN в network namespaces и жутко обломался. То, что нигде не написано, что данный прокси далек от всем привычного вводит людей в заблуждение. Этот нюанс же нигде не описан.
Я правильно понимаю, что ваш вариант на PHP требует запуска Apache или Nginx? Хотелось бы поподробнее узнать о том, как это все запустить.
P.S. Пытался отредактировать URL при помощи url_rewrite_program в squid и могу сказать, что не стоит на это тратить время. Судя по всему проверка URL происходит раньше, чем перенаправление.
Я правильно понимаю, что ваш вариант на PHP требует запуска Apache или Nginx?
Да, для использования приведённого выше прокси-скрипта надо поднимать http-сервер. Я на своём VDS поднял Апач. Чутка доработал скрипт и использую его.
Подскажите если стоит nginx на впс но в директории html уже есть сайт, куда можно скинуть для прокси ваши файлы .htaccess index.php. Я так понимаю можно в корне создать папку и сбросить туда эти файлы. Тогда путь будет http://домен/папка/
Подскажите если стоит nginx на впс но в директории html уже есть сайт, куда можно скинуть для прокси ваши файлы .htaccess index.php. Я так понимаю можно в корне создать папку и сбросить туда эти файлы. Тогда путь будет http://домен/папка/
Можно создать субдомен, и туда закинуть.
Нужно создать в nginx еще один конфиг сайта и там в блоке server указать другую корневую директорию сайта. И данный файл .htaccess придется переписать под nginx, ибо он сделан под apache. Можно вообще указать все, что в нем есть прямо в конфиге сайта.
index.php
<?php header('Access-Control-Allow-Origin: *'); @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( "short_open_tag", 1 ); $uri = substr($_SERVER['REQUEST_URI'], 1); $exp = explode('/', $uri); $med = array_shift($exp); $url = implode('/', $exp); if($med == 'api'){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT,60); $html = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($code == 200){ header("HTTP/1.1 200 OK"); echo $html; } else{ header("HTTP/1.0 404 Not Found"); } } elseif($med == 'img'){ echo file_get_contents($url); } else{ header("HTTP/1.0 404 Not Found"); } ?>
.htaccess
DirectoryIndex index.php RewriteEngine On RewriteBase / ErrorDocument 404 /index.php ErrorDocument 403 /index.php RewriteCond %{REQUEST_FILENAME} !(index\.php) RewriteRule ^(.*)$ /index.php/$1
Пример изображений: http://domain.com/img/http://imagetmdb.cub.watch/http://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
А в чем смысл в index.php отдельно делать api и img? Попробовал удалить лишнее и оставил все в таком виде:
<?php
header('Access-Control-Allow-Origin: *');
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( "short_open_tag", 1 );
$url = substr($_SERVER['REQUEST_URI'], 1);
$proxy = '192.168.0.100:3131';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT,60);
$html = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($code == 200){
header("HTTP/1.1 200 OK");
echo $html;
}
else{
header("HTTP/1.0 404 Not Found");
}
?>
Теперь не надо отдельно прописывать .../api и .../img Вроде все работает. Или я что-то проглядел?
P.S. Строки 12 и 15 нужны для того, чтобы запросы с лампы шли через классические прокси. В данном случае прокси локальный.
А сервер обязательно должен быть за пределами РФ?
А сервер обязательно должен быть за пределами РФ?
Да, так как ТМДБ блокирует доступ для тех кто из РФ и РБ
Скиньте если не трудно под nginx скрипт
index.php
<?php header('Access-Control-Allow-Origin: *'); @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( "short_open_tag", 1 ); $uri = substr($_SERVER['REQUEST_URI'], 1); $exp = explode('/', $uri); $med = array_shift($exp); $url = implode('/', $exp); if($med == 'api'){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT,60); $html = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($code == 200){ header("HTTP/1.1 200 OK"); echo $html; } else{ header("HTTP/1.0 404 Not Found"); } } elseif($med == 'img'){ echo file_get_contents($url); } else{ header("HTTP/1.0 404 Not Found"); } ?>
.htaccess
DirectoryIndex index.php RewriteEngine On RewriteBase / ErrorDocument 404 /index.php ErrorDocument 403 /index.php RewriteCond %{REQUEST_FILENAME} !(index\.php) RewriteRule ^(.*)$ /index.php/$1
Пример изображений: http://domain.com/img/http://imagetmdb.cub.watch/http://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg Пример api http://domain.com/api/http://api.themoviedb.org/3/movie/top_rated?api_key=4ef0d7355d9ffb5151e987764708ce96&language=ru
А в чем смысл в index.php отдельно делать api и img? Попробовал удалить лишнее и оставил все в таком виде:
<?php header('Access-Control-Allow-Origin: *'); @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( "short_open_tag", 1 ); $url = substr($_SERVER['REQUEST_URI'], 1); $proxy = '192.168.0.100:3131'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT,60); $html = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($code == 200){ header("HTTP/1.1 200 OK"); echo $html; } else{ header("HTTP/1.0 404 Not Found"); } ?>
Теперь не надо отдельно прописывать .../api и .../img Вроде все работает. Или я что-то проглядел?
P.S. Строки 12 и 15 нужны для того, чтобы запросы с лампы шли через классические прокси. В данном случае прокси локальный.
Сможете помочь по настройке прокси
Прокси через nginx
server
{
listen 80;
#server_name domain.com;
location ~ ^/proxy/([^:]+):/?/([^/]+)/(.*)$
{
resolver 1.1.1.1 8.8.8.8 ipv6=off;
proxy_pass $1://$2/$3$is_args$args;
proxy_http_version 1.1;
}
}
http://vpsip/proxy/https://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
Прокси через nginx
server { listen 80; #server_name domain.com; location ~ ^/proxy/([^:]+):/?/([^/]+)/(.*)$ { resolver 1.1.1.1 8.8.8.8 ipv6=off; proxy_pass $1://$2/$3$is_args$args; proxy_http_version 1.1; } }
http://vpsip/proxy/https://image.tmdb.org/t/p/w200//1dCTKq9FkwO58EbcOdpZy1sYw71.jpg
Спасибо большое, все работает. Правда бывает иногда не работает прокси, если проверять отдельно на картинке выкидывает 403 ошибку, но после нескольких попыток все восстанавливается
А есть кто живой с этой ветки? Тоже хочу намутить для постеров папки мои торенты,, ток не совсем понял как. Есть у кого время есть подсказать? 😁
Ребят а в чем может быть проблема. Установил nginx, закинул файл my plugin. js с кодом выше. В браузере открывается, как только тест скрипта самого. Или нужно файл что бы был index.php? И в нем уже сам скрипт написать? Подскажите пожалуйста что не так делаю 🙄. Server на vps, или ещё нужно что установить для работы скрипта
Ребят а в чем может быть проблема. Установил nginx, закинул файл my plugin. js с кодом выше. В браузере открывается, как только тест скрипта самого. Или нужно файл что бы был index.php? И в нем уже сам скрипт написать? Подскажите пожалуйста что не так делаю 🙄. Server на vps, или ещё нужно что установить для работы скрипт Скинь контакт от телеги, напишу
Ребят а в чем может быть проблема. Установил nginx, закинул файл my plugin. js с кодом выше. В браузере открывается, как только тест скрипта самого. Или нужно файл что бы был index.php? И в нем уже сам скрипт написать? Подскажите пожалуйста что не так делаю 🙄. Server на vps, или ещё нужно что установить для работы скрипт Скинь контакт от телеги, напишу
@IGNATOV_68
За ночь пока понял, что я пытался hph скрипт запустить как js. И что нужно указать папку, и по ней переходить. А в этой папке должен быть index.php с самим скриптом. И в сервере прописать это, хотя может и не так, 😁🙄
Настроил свой прокси для запросов к TMDB. Но запрос на прокси отправляется некорректный. Пример из логов сквида 1660486075.570 0 333.222.111.000 TAG_NONE/400 3987 GET /http://image.tmdb.org/t/p/w200//o9xtEAlNb0wWql0EnT2SmaLZ1qa.jpg - HIER_NONE/- text/html
Как я понимаю тут линий "/" перед http.