Jak Getem wysłać link do strony, by zwróciła coś?

0

Sytuacja jest niecodzienna bo na jednej stronie pierwszy raz spotykam się z tak dziwną rzeczą, że mam problem z wysłaniem czegoś do strony i otrzymaniem wyniku:

Strona to:
http://getripz.pl/

Dla przykładu możecie tam wklepać link:
http://turbobit.net/fny3qp1frk6m/The.Raid.Redemption.2011.720p.BRRip.XviD.AC3-GHW.part5.rar.html

i w snifferze zobaczyć co trafia do serwera, a co od serwera do nas.
I powiedzcie mi, co tu na tej stronie jest takiego dziwnego, że zrobienie GETa na
http://getripz.pl/dane.php?urls= tutaj adres url

zwraca pytanie w stylu "i co tu szukasz?".
W zapytaniu do strony jeszcze przeglądarka ma X-Requested-With: XMLHttpRequest. Od czego to jest?
Proszę o pomoc, porady.

0

Ciężko mi do końca stwierdzić, ale może głowna strona wspomaga się jakimś skryptem JS, który nie jest wywoływany jeżeli bezpośrednio podamy link jako parametr. Ponieważ wedle mojej - niewielkiej wprawdze - wiedzy na temat protokołu HTTP, jeżeli wyślemy identyczne nagłowki lub ewentualne inne dane jeśli POSTujemy to strona powinna się zachować identycznie i zwrócić to co z pod przeglądarki WWW. W przypadku tej strony widzę pod WireSharkiem różne nagłowki. Jeżeli stronę obsłużymy bez kombinacji to mamy taki nagłowek:

GET /dane.php?urls=http://turbobit.net/fny3qp1frk6m/The.Raid.Redemption.2011.720p.BRRip.XviD.AC3-GHW.part5.rar.html HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; pl) Presto/2.10.289 Version/12.00
Host: getripz.pl
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://getripz.pl/
Connection: Keep-Alive
X-Requested-With: XMLHttpRequest

HTTP/1.1 200 OK

A kiedy robimy to bezpośrednio to taki:

GET /downloads.txt HTTP/1.1

User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; pl) Presto/2.10.289 Version/12.00

Host: getripz.pl

Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Accept-Language: pl-PL,pl;q=0.9,en;q=0.8

Accept-Encoding: gzip, deflate

Referer: http://getripz.pl/

If-Modified-Since: Sat, 28 Jul 2012 12:59:07 GMT

If-None-Match: "4-4c5e364e59fb0"

Connection: Keep-Alive



HTTP/1.1 304 Not Modified

Mimo że wpis w Snifferze dotyczy GET'a dla dane.php. Podejrzewam, że jest to jakieś celowe zabezpiecznie. Jednak nie głębiałem się w temat. Może ktoś inny coś Tobie tutaj konkretniejszego doradzi. Ja polecam nie pragnąć wszystkiego za friko tylko wysupłać kilka złotych i pobierać z wielu hostingów za pomoća serwisów, które to umożłiwiają.

0

Mówisz, że mam premium kupić itd. Ale tu mi nie chodzi o pobieranie plików. Mi zależy na edukacji, zdobyciu wiedzy. Akurat ta strona będzie idealna, by dowiedzieć się czegoś o programowaniu i spróbować nawet do tak dziwnej strony wysłać link przez program i dostać odpowiedź. Pierwszy raz taką stronę stronę widzę i zależy mi na rozwiązaniu problemu. W przyszłości ta wiedza może mi się przyda.

1

No fajnie, że chcesz się edukowac. Myślałem, że tylko zyskiwać linki. Nie wiem w jakim języku programujesz, bo ja bym pod Delphi w Synapse spróbował wysłać identyczny GET jak pokazuje to WireShark dla kliknięcia w link przeglądarki. Miałem nie podawać gotowców, ze względu na bezpodstawne zarzuty o podsyłanie malware w pliku batch w jednym z moich projektów. Oczywiście plik malwarem nie był, ale mnie to zraziło. Jednak tutaj postanowiłem sprawdzić czy zadziała jeżeli zrobię tak jak powinno się to zrobić. Anyway, sprawdziłem na szybko pod Delphi oraz Synapse i jak możesz sam sprawdzić żadnych problemów z uzyskianiem kodu 200 oraz bezpośredniego linku nie ma. Testowałem dla linku, ktory podałeś oczywiście i tylko dla jednego. Pewnie przy tych maksimum trzech, na które pozwala strona trzeba by zmodyfikować GET. Podejrzewam, że strona potrzebuje w nagłowkach referaera jak i tego wpisu X-Requested-With: XMLHttpRequest, którego przy bezpośrednim odwiedzeniu strony nie ma. A kod użytej poniżej funkcji SimpleParse podesłal mi kiedyś @Misiekd przy okazji pomocy w jakimś moim innym, dawnym projekcie.

//...
uses
  httpsend;

function SimpleParse(StrBegin, StrEnd, Str : string) : string;
var
  B, E : integer;
begin
  Result := '';
  if StrBegin = '' then
  begin
    B := 1;
  end
  else
  begin
    B := Pos(StrBegin, Str);
  end;
  if B > 0 then
  begin
    Str := Copy(Str, B + Length(StrBegin), MaxInt);
    if StrEnd = '' then
    begin
      E := Length(Str) + 1;
    end
    else
    begin
      E := Pos(StrEnd, Str);
    end;
    if E > 0 then
    begin
      Result := Copy(Str, 1, E - 1);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender : TObject);
var
  FPage : string;
  SynHttp : THttpSend;
begin
  SynHttp := THttpSend.Create;
  with SynHttp do
  begin
    Protocol := '1.1';
    UserAgent := 'Opera/9.80 (Windows NT 6.1; WOW64; U; pl) Presto/2.10.289 Version/12.00';
    Headers.Insert(0, 'Referer: http://getripz.pl/');
    Headers.Insert(0, 'X-Requested-With: XMLHttpRequest');
    HTTPMethod('GET', 'http://getripz.pl/dane.php?urls=http://turbobit.net/fny3qp1frk6m/The.Raid.Redemption.2011.720p.BRRip.XviD.AC3-GHW.part5.rar.html');
    SetLength(FPage, Document.Size);
    Document.Read(PChar(FPage)^, Length(FPage));
    FreeAndNil(SynHttp);
    ShowMessage(SimpleParse('a href="', '"', FPage));
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1