Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zalogowanie na zewnętrzny serwis z IP odwiedzającego
Forum PHP.pl > Forum > PHP
pytajniczek
Witam
Potrzebuję z pewnego serwisu, dajmy na to a.pl pobrać plik. Aby pobrać plik muszę najpierw do niego się zalogować. Z tym nie ma problemu (curl) jak i również nie mam problemu z pobraniem pliku (robię to za pomocą przekierowania 301). Problem jest następujący - plik jest generowany dla IP, który go chce pobrać. Czyli - na localhoscie wszystko działa pięknie (oczywiście jeśli ja pobieram plik). Schody zaczynają się, gdy postawię skrypt na serwerze. Wtedy IP pobierane jest z serwera a nie od użytkownika który wszedł na skrypt (nasz kochany curl). I w wyniku czego - fakt, dostanę adres linku, ale go nie pobiorę, bo serwis a.pl nie przypisał do niego adresu IP użytkownika tylko mojego serwera.
Mam jedno rozwiązanie - poprzez streaming pliku. Czyli serwer pośredniczy w przesyłaniu pliku do użytkownika. Takie rozwiązanie niestety mnie nie satysfakcjonuje, ponieważ zżera transfer z mojego serwera i prędkość jest uzależniona od mojego serwera. Jak zrobić, aby adres IP był pobrany nie z serwera a od użytkownika który wszedł na mój skrypt? Proszę tylko nie pisać, że się nie da - widziałem jak takie coś działało na pewnej stronie, jednak skryptu w .php nie pobiorę, żebym mógł sprawdzić jak to jest zrobione smile.gif
cycofiasz
To jest zabezpieczenie strony przed takimi opryszkami jak ty a na tym forum z tego co wiem nie wspiera się takich działań.
pytajniczek
Yy to jest normalne pytanie z programowania. Równie dobrze mógłbym podać sytuację, gdy użytkownik za pomocą mojego serwera i mojego skryptu dodaje jakąś wiadomość na innej stronie. Dlaczego ta strona ma mieć IP mojego serwera a nie IP użytkownika który korzysta z mojego skryptu?
Ja mam tylko pytanie czy i jak można takie coś zrobić... A kwestię, że serwer a.pl ma takie a nie inne zabezpieczenia pozostawiam to bez komentarza. Wielu tutaj się pytało o pobieranie danych z innych stron - i jakoś oni dostawali pomoc.
rav1989
o ile wiem curl wspiera proxy, więc może tą drogą da się to rozwiązać biggrin.gif
melkorm
Możesz zrobić tak jak to robią serwisy od pobierania czyli przekierować usera na stronę downloadu czyli z tekstem "Dziękujemy bla bla bla za pobieranie pliku, pobieranie zacznie się za chwile jeżeli nie kliknij w link"

a w kodzie dajesz meta z refresh na adres z plikiem, gdy przeglądarka wykrywa że jest to plik to nie przechodzi na nową stronę tylko wyskakuje monit z pobieraniem i jest wrażenie że plik jest pobierany z Twojej strony a nie z zew. adresu, a IP idzie użytkownika.
pytajniczek
Ale to nie jest rozwiązanie - bo ten plik jest dostępny po zalogowaniu a loguję się curlem. Czyli teoretycznie użytkownik jakby ręcznie się zalogował i pobrał ten plik to by chodziło. Ale ja się loguję curlem - a curl podaje IP serwera i użytkownik nie pobierze bo ma inne IP. Na localu u mnie chodzi, na serwerze już nie...
A proxy no to niby by było - ale IP musi być takie jak pobiera plik użytkownik czyli odpada.
melkorm
To przy logowaniu ustaw nagłówek IP jako IP użytkownika wink.gif
pytajniczek
Jakby to było takie proste tongue.gif
Kodzik:
  1. curl_setopt( $wynik, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: ".$_SERVER['REMOTE_ADDR'], "HTTP_X_FORWARDED_FOR: ".$_SERVER['REMOTE_ADDR']));

Nie działa... Myślałem, żeby coś pokombinować z fopen lub fsockopen tylko jak to zrobić? Czyli, że skrypt tak jakby przekazuje plik użytkownikowi ale IP jest nadal serwera - czyli w drugą stronę smile.gif. Tylko, żeby to nie zżerało transferu..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.