Saltar al contenido

¿Utiliza un servicio de proxy web para obtener el contenido html de la URL de destino?

Solución:

Me gustaría sugerirle que use IP proxy directo: puerto, por ejemplo 115.238.225.26:80. Entonces podría manejar fácilmente el problema usando el siguiente código:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(new Uri("http://example.com"));
WebProxy webproxy = new WebProxy("115.238.225.26", 80);
webproxy.BypassProxyOnLocal = false;
req.Method = "GET";
req.Proxy = webproxy;
HttpWebResponse response = (HttpWebResponse) req.GetResponse();
var respStream = response.GetResponseStream();
var result = "";
if (respStream != null) {
    var strReader = new StreamReader(respStream);
    result = strReader.ReadToEnd();
}

Luego, en la variable de resultado, encontrará el contenido de la página de resultados o una cadena vacía en caso de que ocurran algunos problemas (respStream == null). Además, es posible que se requiera agregar manejo de excepciones para este código en caso de que ocurra algún problema de conexión o algo así.

El problema principal que parece estar encontrando es que el ejemplo de proxy que está usando requiere una POST para actualizar la URL de destino que está intentando navegar a través del proxy. Es por eso que no obtiene ningún contenido de la página de destino y el mensaje de error

<div id="error">Hotlinking directly to proxied pages is not permitted.</div>

No sé cómo se ve su código, pero parece que podría usar el método HttpWebRequest POST

WebRequest request = (HttpWebRequest)WebRequest.Create("http://www.glype-proxy.info/includes/process.php?action=update");

var postData = "url="+"http://www.example.com";
postData += "&allowCookies=on";
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream()) {
    stream.Write(data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

Necesitará encontrar o alojar un proxy que devuelva el HTML de la página, como http://www.glype-proxy.info/. Aun así, para que un proxy funcione correctamente, debe cambiar el enlace a los recursos de la página a su propia ruta “proxy”.

http://www.glype-proxy.info/browse.php?u=https%3A%2F%2Fwww.example.com%2F&b=4&f=norefer

En la URL anterior, si desea la ruta a los recursos originales, tendrá que encontrar todos los recursos que se han redirigido y descodificar la ruta pasada como u= parámetro a este proxy específico. Además, es posible que desee ignorar los elementos adicionales inyectados por el proxy, en este caso el <div id="include"> elemento.


Creo que el proxy que estás usando funciona de la misma manera que el proxy “Glype” que usé en este ejemplo, pero no tengo acceso a él en el momento de la publicación. Además, si desea utilizar otros proxies, es posible que desee tener en cuenta que muchos proxies muestran el resultado en un iFrame (probablemente para prevención de XSS, navegación o skinning).

Nota: Generalmente, usar otro servicio fuera de una API incorporada es una mala práctica, ya que los servicios a menudo obtienen una actualización de GUI o algún otro cambio que podría romper su script. Además, esos servicios podrían experimentar interrupciones o simplemente ser cancelados.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *