Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Otwieranie zewnętrznej strony ze zmienną $_GET
Forum PHP.pl > Forum > PHP
shakugan45
Witam, próbuję za pomocą php wyciągnąć pewne dane ze strony, niestety z brakiem efektów.
Źródłem jest http://myanimelist.net/anime.php?letter=A
Gdy próbuję odczytać właśnie ten url za pomocą kodu
  1. $pg=file_get_contents('http://myanimelist.net/anime.php?letter=A');
  2. echo $pg;
i wyświetlić go jedynie dla celów testowych otrzymuje błąd 404.

Jak widać, mamy tutaj zmienną $_GET['letter']. Nie wiem czy to właśnie w tym nie tkwi problem, ponieważ gdy próbuję otworzyć chociażby stronę facebooka, to grzecznie mi się ona wyświetla.

Szybki edit: surprajs, gdy odświeżam stronę to raz się ona wczytuje a raz nie...

Z góry dziękuję za pomoc.
_Borys_
file_get_contents(); , fopen(); i inne nie zawsze działa ponieważ mogą być przekierowania, albo strony sprawdzają ciasteczka albo useragenta itd.
Spróbuj pobierać stronę CURL-em, powinno zadziałać.
shakugan45
Dziękuję za odpowiedź.
Niestety nadal to samo, 404.
  1. $ch = curl_init($url);
  2. curl_setopt($ch, CURLOPT_URL, $url);
  3. curl_setopt($ch, CURLOPT_HEADER, 0);
  4. $pg=curl_exec($ch);
  5. curl_close($ch);
  6. echo $pg;
_Borys_
Tak mniej więcej, useragenta możesz zmienić na swojego.
  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, "http://myanimelist.net/anime.php?letter=A");
  3. curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.80 (Windows NT 5.1; Edition Campaign 21) Presto/2.12.388 Version/12.14');
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
  6. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  8. $strona = curl_exec($ch);
  9. curl_close($ch);
  10. echo $strona;

Jeśli uruchamiasz z jakiegoś darmowego serwera i nie zadziała to sprawdź czy masz dostęp do CURL-a, czy serwer udostępnia.
shakugan45
Nadal to samo... 404 i zdania nie zmieni, jednak czasem wyświetla pustą stronę o źródle
  1. <META NAME="robots" CONTENT="noindex,nofollow">
  2. (function(){function getSessionCookies(){cookieArray=new Array();var cName=/^\s?incap_ses_/;var c=document.cookie.split(";");for(var i=0;i<c.length;i++){key=c[i].substr(0,c[i].indexOf("="));value=c[i].substr(c[i].indexOf("=")+1,c[i].length);if(cName.test(key)){cookieArray[cookieArray.length]=value}}return cookieArray}function setIncapCookie(vArray){try{cookies=getSessionCookies();digests=new Array(cookies.length);for(var i=0;i<cookies.length;i++){digests[i]=simpleDigest((vArray)+cookies[i])}res=vArray+",digest="+(digests.join())}catch(e){res=vArray+",digest="+(encodeURIComponent(e.toString()))}createCookie("___utmvc",res,20)}function simpleDigest(mystr){var res=0;for(var i=0;i<mystr.length;i++){res+=mystr.charCodeAt(i)}return res}function createCookie(name,value,seconds){if(seconds){var date=new Date();date.setTime(date.getTime()+(seconds*1000));var expires="; expires="+date.toGMTString()}else{var expires=""}document.cookie=name+"="+value+expires+"; path=/"}function test(o){var res="";var vArray=new Array();for(test in o){switch(o[test]){case"exists":try{vArray[vArray.length]=encodeURIComponent(test+"="+typeof(eval(test)))}catch(e){vArray[vArray.length]=encodeURIComponent(test+"="+e)}break;case"value":try{vArray[vArray.length]=encodeURIComponent(test+"="+eval(test).toString())}catch(e){vArray[vArray.length]=encodeURIComponent(test+"="+e)}break;case"plugins":try{p=navigator.plugins;pres="";for(a in p){pres+=(p[a]["description"]+" ").substring(0,20)}vArray[vArray.length]=encodeURIComponent("plugins="+pres)}catch(e){vArray[vArray.length]=encodeURIComponent("plugins="+e)}break;case"plugin":try{a=navigator.plugins;for(i in a){f=a[i]["filename"].split(".");if(f.length==2){vArray[vArray.length]=encodeURIComponent("plugin="+f[1]);break}}}catch(e){vArray[vArray.length]=encodeURIComponent("plugin="+e)}break}}vArray=vArray.join();return vArray}var o={navigator:"exists","navigator.vendor":"value",opera:"exists",ActiveXObject:"exists","navigator.appName":"value",platform:"plugin",webkitURL:"exists","navigator.plugins.length==0":"value"};try{setIncapCookie(test(o));document.createElement("img").src="/_Incapsula_Resource?SWKMTFSR=1&e="+Math.random()}catch(e){img=document.createElement("img");img.src="/_Incapsula_Resource?SWKMTFSR=1&e="+e}})();
  3. (function() {
  4. var z="";var b="7472797B766172207868723B76617220743D6E6577204461746528292E67657454696D65282
    93B766172207374617475733D227374617274223B7661722074696D696E673D6E6577204172726179
    2833293B77696E646F772E6F6E756E6C6F61643D66756E6374696F6E28297B74696D696E675B325D3
    D22723A222B286E6577204461746528292E67657454696D6528292D74293B646F63756D656E742E63
    7265617465456C656D656E742822696D6722292E7372633D222F5F496E63617073756C615F5265736
    F757263653F4553324C555243543D363726743D373826643D222B656E636F6465555249436F6D706F
    6E656E74287374617475732B222028222B74696D696E672E6A6F696E28292B222922297D3B6966287
    7696E646F772E584D4C4874747052657175657374297B7868723D6E657720584D4C48747470526571
    756573747D656C73657B7868723D6E657720416374697665584F626A65637428224D6963726F736F6
    6742E584D4C4854545022297D7868722E6F6E726561647973746174656368616E67653D66756E6374
    696F6E28297B737769746368287868722E72656164795374617465297B6361736520303A737461747
    5733D6E6577204461746528292E67657454696D6528292D742B223A2072657175657374206E6F7420
    696E697469616C697A656420223B627265616B3B6361736520313A7374617475733D6E65772044617
    46528292E67657454696D6528292D742B223A2073657276657220636F6E6E656374696F6E20657374
    61626C6973686564223B627265616B3B6361736520323A7374617475733D6E6577204461746528292
    E67657454696D6528292D742B223A2072657175657374207265636569766564223B627265616B3B63
    61736520333A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A20707
    26F63657373696E672072657175657374223B627265616B3B6361736520343A7374617475733D2263
    6F6D706C657465223B74696D696E675B315D3D22633A222B286E6577204461746528292E676574546
    96D6528292D74293B6966287868722E7374617475733D3D323030297B706172656E742E6C6F636174
    696F6E2E72656C6F616428297D627265616B7D7D3B74696D696E675B305D3D22733A222B286E65772
    04461746528292E67657454696D6528292D74293B7868722E6F70656E2822474554222C222F5F496E
    63617073756C615F5265736F757263653F535748414E45444C3D39323236333138333931333139333
    534312C313438393138333534343038353539333438352C3939333030353134363935393532373533
    30352C3330393134222C66616C7365293B7868722E73656E64286E756C6C297D63617463682863297
    B7374617475732B3D6E6577204461746528292E67657454696D6528292D742B2220696E6361705F65
    78633A20222B633B646F63756D656E742E637265617465456C656D656E742822696D6722292E73726
    33D222F5F496E63617073756C615F5265736F757263653F4553324C555243543D363726743D373826
    643D222B656E636F6465555249436F6D706F6E656E74287374617475732B222028222B74696D696E6
    72E6A6F696E28292B222922297D3B";for (var i=0;i<b.length;i+=2){z=z+parseInt(b.substring(i, i+2), 16)+",";}z = z.substring(0,z.length-1); eval(eval('String.fromCharCode('+z+')'));})();
  5. <iframe style="display:none;visibility:hidden;" src="http://my.incapsula.com/public/ga/jsTest.html" id="gaIframe"></iframe>
  6. </body></html>
  7.  



Korzystam z xampp'a 3.2.1, jeśli strona wypali to wykupię serwer, ale narazie się na to nie zapowiada...

@Edit:
Odświeżyłem tak z desperacją jeszcze kilka razy i... działa. Po którymś odświeżeniu jednak nadal to samo, albo pusta albo 404. Niestety, skrypt żeby spełniał swoje zadanie będzie musiał odczytać 27 podstron z rzędu więc musi działać za każdym razem sad.gif Dzięki za pomoc tak czy inaczej. Masz może jeszcze jakieś pomysły?
_Borys_
Czasem ładuje się javascript który ustawia ciastka w przeglądarce po swojemu, i od tego pewnie zależy przekierowanie.
Można to obejść, jeśli w źródle strony znajdzie się jakieś unikalne słowo które występuje w tym skrypcie javascript to wtedy curl wywołuje się ponownie. Innego pomysłu nie mam jak na razie.
  1. <?php
  2.  
  3. function curl_get_page($ch)
  4. {
  5. return curl_exec($ch);
  6. }
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, 'http://myanimelist.net/anime.php?letter=A');
  9. curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; Edition Campaign 21) Presto/2.12.388 Version/12.14');
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  12. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__file__) . '/cookies.txt');
  13. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__file__) . '/cookies.txt');
  14. $pg = curl_get_page($ch);
  15. while (strpos($pg, 'getSessionCookies') !== false)
  16. {
  17. $pg = curl_get_page($ch);
  18. }
  19. echo $pg;
  20. curl_close($ch);
  21.  
  22. ?>
shakugan45
No i śmiga. Wielkie Ci dzięki za pomoc smile.gif
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.