curl: can ' T fetch rss von der Webseite, da CloudFlare
Ich bin Bemerkenswerte Verbindung dieser Website http://www.youm7.com/newtkarirrss.asp mit curl auf dem server
Aber ich kann es von localhost mit problem
Hier ist der test
http://www.tjreb.com/xml_grabber.php?feed=http://www.youm7.com/newtkarirrss.asp&stack=1
Versuchen Die CNN rss-feed
http://www.tjreb.com/xml_grabber.php?feed=http://rss.cnn.com/rss/edition_meast.rss&stack=0
Wie kann ich das umgehen dieser Fehler
Hier ist mein source code
<?php
class xml_grabber
{
private $xml_file = '' ;
private $xml_link = '' ;
private $xml_dom = '' ;
private $xml_type = '' ;
private $xml_content = '' ;
private $xml_errors = array() ;
public $xml_stack = 0 ;
public function __construct($link_file_com = '')
{
if(!$link_file_com)
{
$this->xml_errors['construct'] = 'No Xml In Construct' ;
return false;
}
elseif(!function_exists('simplexml_load_file') || !function_exists('simplexml_load_string') || !function_exists('simplexml_import_dom'))
{
$this->xml_errors['functions'] = 'simple xml function not exists' ;
return false;
}
else
{
$this->set_xml($link_file_com) ;
}
//ini_set('memory_limit', '100M');
}
public function set_xml($xml)
{
if(isset($xml{3}))
{
if(file_exists($xml))
{
$this->xml_type = 1 ;
$this->xml_file = $xml ;
}
elseif(filter_var($xml, FILTER_VALIDATE_URL))
{
$this->xml_type = 2 ;
$this->xml_link = $xml ;
}
else
{
$this->xml_type = 3 ;
$this->xml_dom = $xml ;
}
}
else
{
$this->xml_type = '' ;
}
}
public function get_xml()
{
if($this->xml_type == '')
{
return false ;
}
elseif($this->xml_type == 1)
{
return $this->xml_file ;
}
elseif($this->xml_type == 2)
{
return $this->xml_link ;
}
elseif($this->xml_type == 3)
{
return $this->xml_dom ;
}
}
public function set_columns($new_columns= array())
{
return $this->xml_columns = $new_columns ;
}
public function get_columns()
{
return $this->xml_columns ;
}
public function load()
{
if($this->xml_type == '')
{
$this->xml_errors['loader'] = 'Unknown XML type' ;
return false;
}
elseif($this->xml_type == 1)
{
$dom = simplexml_load_file($this->xml_file,null, LIBXML_NOCDATA) ;
$this->xml_content = $dom ;
}
elseif($this->xml_type == 2)
{
$con = $this->connect($this->xml_link);
if($this->xml_stack == 1)
{
echo $con; die();
}
$this->xml_content = simplexml_load_string($con,null, LIBXML_NOCDATA) ;
}
elseif($this->xml_type == 3)
{
return $this->xml_dom ;
}
}
public function fetch($return = 'array')
{
if($this->xml_content != '')
{
$rss_feed = $this->xml_content ;
$rss_title = (string) $rss_feed->channel->title ;
$rss_link = (string) $rss_feed->channel->link ;
$rss_cat = (string) $rss_feed->channel->category ;
$rss_image = (string) $rss_feed->channel->image->url ;
$rss_summary =
array
(
'info' =>
array(
'title'=>$rss_title ,
'link'=>$rss_link ,
'cat'=>$rss_cat ,
'image'=>$rss_image
) ,
'item' => array()
) ;
foreach($rss_feed->channel->item as $item)
{
if($item->enclosure && $item->enclosure->attributes())
{
$image0 = $item->enclosure->attributes() ;
$image_url = $image0 ['url'] ;
}
$rss_summary['item'][] =
array(
'title' => (string) $item->title ,
'description' => (string) $item->description ,
'link' => (string) $item->link ,
'date' => (string) $item->pubDate ,
'image' => (string) $item->image ,
'image2' => (string) $image0
) ;
}
if($return == 'json')
{
return json_encode($rss_summary) ;
}
elseif($return == 'serialize')
{
return serialize($rss_summary) ;
}
elseif($return == 'xml')
{
return xml_encode($rss_summary) ;
}
else
{
return $rss_summary ;
}
}
else
{
$this->xml_errors['fetch'] = 'No Xml Content' ;
}
}
protected function connect($link)
{
if(!filter_var($link, FILTER_VALIDATE_URL))
{
$this->xml_errors['connect'] = 'Not Vaild Link To Get data' ;
return false ;
}
if(function_exists('curl_init'))
{
$cu = curl_init();
curl_setopt($cu, CURLOPT_URL, $link);
curl_setopt($cu, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cu, CURLOPT_SSL_VERIFYHOST, false);
//curl_setopt($cu, CURLOPT_REFERER, "http://www.tjreb.com");
//curl_setopt($cu, CURLOPT_HEADER, true);
//curl_setopt($cu, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, TRUE);
$co = curl_exec($cu) ;
if($co)
{
$con = $co ;
}
else
{
$this->xml_errors['connect'] = 'No Result From Curl' ;
$this->xml_errors['curl'] = curl_error($cu);
}
curl_close($cu) ;
return $con ;
}
if(!$con and function_exists('ini_get'))
{
$url_fopen = ini_get('allow_url_fopen') ;
if($url_fopen == 0)
{
if(function_exists('ini_set'))
{
ini_set('allow_url_fopen', 1) ;
}
$check_fopen = 1 ;
}
else
{
$check_fopen = 0 ;
}
if($check_fopen == 1)
{
$url_fopen = ini_get('allow_url_fopen') ;
}
if($url_fopen == 1)
{
if(function_exists('file_get_contents') and !$con)
{
$con = @file_get_contents($link) ;
if($con)
{
return $con ;
}
else
{
$this->xml_errors['connect'] = 'No Result From file_get_contents' ;
}
}
elseif(function_exists('readfile') and !$con)
{
$con = @readfile($link);
if($con)
{
return $con ;
}
else
{
$this->xml_errors['connect'] = 'No Result From readfile' ;
}
}
elseif(function_exists('file') and !$con)
{
$con = @file($link) ;
if($con)
{
return $con ;
}
else
{
$this->xml_errors['connect'] = 'No Result From file' ;
}
}
}
}
if(!$con)
{
$this->xml_errors['connect'] = 'Curl And Allow Url Fopen Disabled On Server' ;
return false ;
}
}
public function get_error()
{
return $this->xml_errors ;
}
}
if(isset($_GET['feed']))
{
$url = addslashes($_GET['feed']) ;
}
else
{
$url = 'http://rss.cnn.com/rss/edition_meast.rss' ;
}
$fetch = $_GET['fetch'] ;
$stack = $_GET['stack'] ;
$xml = new xml_grabber($url) ;
/*
http://www.youm7.com/new3agelrss.asp
http://www.youm7.com/newtkarirrss.asp
http://www.almasryalyoum.com/rss_feed_term/223241/rss.xml
http://gdata.youtube.com/feeds/api/playlists/18A7E36C33EF4B5D?v=2
http://rss.cnn.com/rss/edition_meast.rss
https://www.facebook.com/feeds/page.php?format=atom10&id=40796308305
https://www.facebook.com/feeds/page.php?format=rss20&id=40796308305
http://www.fwasl.com/feed
https://www.facebook.com/feeds/page.php?format=atom10&id=378156838895039
*/
if(isset($stack))
{
$xml -> xml_stack = intval($stack) ;
}
$res = $xml -> load() ;
$result = $xml -> fetch($fetch) ;
if($result)
{
print_r ( $result ) ;
}
else
{
print_r ( $xml->get_error() ) ;
}
?>
mein Projekt mujaz.awcore.com
InformationsquelleAutor Mona Abdelmajeed | 2012-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht leicht umgehen Cloudflare. Aber Sie können die hack-Schutz-system. 🙂
Zunächst analysieren Sie die Seite (Cloudflare Schutz Seite) und berechnen 3+13*7 (wahrscheinlich wird anders sein für jede Anforderung.) in
Dann senden Sie post-Anforderung, die gleiche Seite mit "jschl_vc" Wert von #ChallengeForm, die Sie von analysierten Daten und "jschl_answer" Wert als 3+13*7. Und dann versuchen zu Holen die mal wieder auf der Seite mit den cookie-Wert, Cloudflare Hinzugefügt. Wenn Sie Hinzugefügt Cloudflare whitelist, die Sie nicht sehen, dass die Seite nicht mehr.
ich denke der server sollte als cookie speichern , aber ich weiß nicht, wie curl return cookies oder Arbeit mit es
schauen Sie hier: stackoverflow.com/questions/895786/...
Ich habe Versucht, Ihre Idee zu re-post-Daten, LOCKE und cookie erhalten Kein Ergebnis, cookie , hier ist die url test tjreb.com/xml_grabber.php?feed=http://www.youm7.com/... ich fügen Sie einfach einige Informationen in der Seite , hier ist der header Parsen, dass ich stackoverflow.com/a/895858/1019618 ... Warten Ihre Antwort
Tatsächlich gibt es eine cookie-Wert. Zum Beispiel die Seite, die Sie gemeinsam angefordert werden muss mit "__cfduid=dae00b9d3a19db1891fb83e3f7fd5d15d1345008603;". (Werfen Sie einen Blick auf source-code der Seite) Könnten Sie das bitte noch einmal überprüfen?
InformationsquelleAutor burak emre
Können Sie cloudflare Schutz mit PhantomJS http://phantomjs.org/
die ausführen kann cloudflare JS außerhalb eines Browsers mit dem folgenden kleinen script "delay.js":
führen Sie es als
phantomjs delay.js http://protected.url 5000
Diese erhalten "geschützt.url" und warten 5000ms für die cloudflare-code zu laden, der echten Seite und gibt Sie auf stdout aus.
InformationsquelleAutor andree
Müssen Sie auf Ihrer Website, welchen browser Ihr nutzt.
z.B. Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
oder verwenden Sie den aktuellen Benutzer eigene browser-agent mit $_SERVER['HTTP_USER_AGENT']
Danke @Waygood für die Hilfe, die ich verwendet, die option aber Kein Ergebnis
Noch nicht benutzt Cloudflare also sorry das hat nicht geholfen. Froh @burak-emre war in der Lage, dies zu lösen, +1
InformationsquelleAutor Waygood