Recuperando dados cruzados php

O que eu gostaria de fazer é recuperar alguns dados da wikipedia, com ajax. Eu deixei o script do lado do cliente para depois e tentei recuperar algum conteúdo random. Eu tentei com os methods fopen () e fread (), mas não funcionou, e então vim em torno de um artigo que tinha o código para provedores de internet que usavam proxies. Como é meu caso, tentei o código abaixo, mas não deu nenhuma resposta.

 array('proxy' => 'tcp://10.10.10.101:8080', 'request_fulluri' => true)); $context = stream_context_create ($opts); $data = file_get_contents('http://www.php.net', false, $context); echo $data; ?> 

Ok, então tentei o código sugerido, com os valores de proxy apropriados:

 <?php $url = 'http://www.php.net'; $proxy = '10.10.10.101:8080'; //$proxyauth = 'user:password'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_PROXY, $proxy); //curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); $curl_scraped_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; 

Mas isso me dá esse erro: HTTP / 1.0 403 Data proibida: segunda-feira, 02 de julho de 2012 09:41:20 GMT Servidor: Apache Tipo de conteúdo: texto / planilha Proibido o anfitrião do destino proibido

Não entendo por que não funciona e como eu poderia resolver o problema.

não é realmente um problema de domínio cruzado porque você está carregando os dados do servidor e não o navegador.

Para carregar uma página da Web a partir de PHP por meio de um proxy – é melhor usar cURL (um cliente PHP http: http://php.net/manual/en/book.curl.php ).

Aqui está um exemplo – é tirado de uma pergunta semelhante (http://stackoverflow.com/questions/5211887/how-to-use-curl-via-a-proxy):

 < ?php $url = 'http://www.php.net'; $proxy = '10.10.10.101:8080'; //$proxyauth = 'user:password'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_PROXY, $proxy); //curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); $curl_scraped_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; 

Se o seu proxy precisar de autenticação - você pode configurar a varanda $ proxyauth ...

Eu apenas testei seu código – simplesmente usando meu próprio endereço de proxy – e funciona.

 < ?php $url = 'http://www.php.net'; $proxy = '192.168.4.200:3128'; //$proxyauth = 'user:password'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_PROXY, $proxy); //curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); $curl_scraped_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; ?> 

Então, o que você está vendo é provavelmente o próprio proxy, o que não permite (alguns ou todos os externos?) Sites a serem alcançados. Talvez tudo que você precisa é autenticar com o proxy.

Isso provavelmente significa que você não poderá fazer isso via get_contents, curl, fsockopen ou qualquer outra maneira até que você tenha desmarcado isso com os administradores de rede.