Detekcija redirekcije bez PHP curl-a

Dakle nasao sam na netu curl primjer koji za zadani url “www.nekiurl.com/nesto/jos_nesto” detektuje da li se isti url redirektuje i gdje.
Medjutim nasao sam neke primjere url-ova za koje prijavi redirekciju a kad se url otvori rucno u brovzeru tada nema redirekcije. Dakle ne redi kako treba.

Moze li se napraviti ovo nekako drugacije? Nemam pristup tim url-ovima pa da vidim kako je odradjena redirekcija (mozda bih mogao da to vidim ako bi pomoglo - radi se o url-ovima sa posla).

Dakle u php-u, moze li da se napravi detekcija redirekcije bez curl-a? Ako je pomoc detekcija treba da radi samo za isti domen na kom je i url.
Npr. “www.nekiurl.com/nesto/jos_nesto” provjeri da li se redirektuje na “www.nekiurl.com”. Ako da ispisi OK, a ako ne ispisi NO.

Tipično bobijevo pitanje. “Hoću da saberem kruške i jabuke, ali mi šljive nisu zelene boje. Kako da nađem zelenu šljivu zatvorenih očiju?”

hahahahaha, nisi pametan. Pa ne kontam sta nije jasno u svemu ovome? Moze li da se napravi pracenje redirekcije bez curl-a? Ne moze biti jednostavnije.

Pitanje2: Moze li se curl-om slati “lazni” user-agent?

boby evo trebalo mi je 2 sekunde da ti nadjem dali curl moze da podesi user agent u php-u:

curl_setopt($ch,CURLOPT_USERAGENT,‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13’);
^-- prvi link na google-u sa query-em “php curl user agent”

ono prvo pitanje te ne razumijem, bilo bi dobro da das neki primjer kako ti to vidis dali je nesto redirektovano sa curl-om ?
evo da ti pokazem na primjeru sa telnet-om kako ces vidit dali ima redirekcija ili ne.
npr. kad otvaras stranicu www.bih.net.ba oni redirektuju na www.bhtelecom.ba

maher@bar:~$ telnet www.bih.net.ba 80
Trying 195.222.60.20...
Connected to www.bih.net.ba.
Escape character is '^]'.
GET / HTTP/1.1     
Host: www.bih.net.ba

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 04 Mar 2014 19:34:09 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.bhtelecom.ba/

za vise informacija pogledaj:
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

Evo ovako:


$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0"); // Necessary. The server checks for a valid User-Agent.
curl_exec($ch);

$response = curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
curl_close($ch);

echo !empty($matches[1]) ? trim($matches[1][0]) : ''; 

gdje je $url, url koji provjeravam. Ako u ovu skriptu unesem www.google.com dobicu kao rezultat http://www.google.ba/?gws_rd=cr&ei=9DgWU-TXNMvSsgbCsICYAQ
Znaci savrsno radi. To je to sto radim.

U firmi u kojoj radim postoje url-ovi koji nude dowload nekih igrica. Kada se neki projekat napusti tada se nastima da taj url vodi na home page istoimenog domena. Moj zadatak je da unosim jedan po jedan url u brovzer i gledam da li nudi dowload ili redirektuje na home page. E hocu da mi to skripta radi.
Problem je sledeci: Nasi linkovi rade samo za windows platformu. Kada url detektuje nepodrzan OS takodje redirektuje na home page. E ovde dolazi do greske. URL-ovi koji su mozda “zivi” bivaju oznaceni kao redirekt jer je curl skripta izvrsena na linux masini (koji nije podrzan).

Nazad na pocetak:

  1. Moze li ovo da se napravi ne koristeci curl? (sta ovde nije jasno?)
  2. Moze li user-agent da se “lazira” pa da kazem url-u koji posjecujem “hej ja dolazim sa win masine a ne linux”

Nadam se da sam sada sve objasnio.

Nasao sam odgovor na drugo pitanje:

CURLOPT_USERAGENT
It’s the CURLOPT_USERAGENT line which sets the user agent string. Specify whatever you want as the value and that’s what will appear in the weblogs of the server the request is going to.

E ovo sam pitao. Moze li bilo sta da se podesi kao user agent.

odgovor na drugo pitanje sam ti i ja dao nakon 2 sec googlanja.

da bi ti bilo lakse testirat to sto hoces, napravi sebi apache server ili neki po volji na kojem ces napravit par redirekta i testirat te stvari, jer je lakse na lokalnom apache serveru ukljucit logove i pomocu njih gledati sta se tacno desava. mozes i iz konzole testirat sa “curl” programcicem , ne moras sve radit u php-u. kad sve to istestirat i dovedes u red kako treba biti , samo to pretvori u php code:

maher@bar:~$ curl -I -A "OMG_THIS_IS_MY_AGENT/v.1337"  www.bih.net.ba
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 04 Mar 2014 22:42:30 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.bhtelecom.ba/

sve ti se opcije nalaze u “man curl” ili za php na php.net curl.setopt …

[quote=maher_]odgovor na drugo pitanje sam ti i ja dao nakon 2 sec googlanja.

da bi ti bilo lakse testirat to sto hoces, napravi sebi apache server ili neki po volji na kojem ces napravit par redirekta i testirat te stvari, jer je lakse na lokalnom apache serveru ukljucit logove i pomocu njih gledati sta se tacno desava. mozes i iz konzole testirat sa “curl” programcicem , ne moras sve radit u php-u. kad sve to istestirat i dovedes u red kako treba biti , samo to pretvori u php code:

maher@bar:~$ curl -I -A "OMG_THIS_IS_MY_AGENT/v.1337"  www.bih.net.ba
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 04 Mar 2014 22:42:30 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.bhtelecom.ba/

sve ti se opcije nalaze u “man curl” ili za php na php.net curl.setopt …[/quote]

Ok hvala, pregledacu manual prvo.

hahahahaha, nisi pametan. Pa ne kontam sta nije jasno u svemu ovome? Moze li da se napravi pracenje redirekcije bez curl-a? Ne moze biti jednostavnije.

Pitanje2: Moze li se curl-om slati “lazni” user-agent?[/quote]
Pitanje 1 (kruške+jabuke): Ne može ni sa curlom ni bez curla. Redirekcija se može napraviti i kroz JavaScript.
Pitanje 2 (zatvorene oči): To je sada jasno ali zašto nisi to odmah pitao? Pitao si zašto za neke linkove dobijaš false positive. To može biti zbog user agenta ili zbog nečega drugog, niko to ne može znati dok ne daš primjer linka koji ne radi.
Pitanje 3 (zelene šljive): Kakve veze u svemu tome ima da li koristiš curl ili ne?

hahahahaha, nisi pametan. Pa ne kontam sta nije jasno u svemu ovome? Moze li da se napravi pracenje redirekcije bez curl-a? Ne moze biti jednostavnije.

Pitanje2: Moze li se curl-om slati “lazni” user-agent?[/quote]
Pitanje 1 (kruške+jabuke): Ne može ni sa curlom ni bez curla. Redirekcija se može napraviti i kroz JavaScript.
Pitanje 2 (zatvorene oči): To je sada jasno ali zašto nisi to odmah pitao? Pitao si zašto za neke linkove dobijaš false positive. To može biti zbog user agenta ili zbog nečega drugog, niko to ne može znati dok ne daš primjer linka koji ne radi.
Pitanje 3 (zelene šljive): Kakve veze u svemu tome ima da li koristiš curl ili ne?[/quote]

  1. Ok jasno je da mose i JS, ja sam samo pitao moze li jos necim. nebitno
  2. Moja greska.
  3. Pa ima velike veze. Prvi put se susrecem s curl-om. Zanimalo me je postoji li nesto slicno.

u php-u ima funkcija http://www.php.net/get_headers ali to je mozda neka strip down verzija onoga sto zelis. Mozes otvoriti i HTTP socket sto se toga tice :smiley:

pogledacu, thx