在 C#或 VB.Net 中,我需要通过网络代理服务访问网页,对目标网址进行网页报废我很感兴趣。
让我们举一个随机的网络代理服务(真的无论哪一个,我愿意接受建议),例如下面的例子,这不会像其他人那样使查询中的哈希变得复杂(这是一个事情,我不知道如何处理):
http://proxyanonimo.es/browse.php?u=http%3a%2f%2furl.com
然后,当我对该网址执行HttpWebRequest
时,我希望在回复中遇到目标网址的html内容,但不是我得到此内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Proxy Anonimo :: Spanish Web Proxy</title>
<meta name="keywords" content="proxy, webproxy, proxy online, spanish proxy" />
<meta name="description" content="Usa nuestro WebProxy An�nimo para comprobar como se ve una web desde otro sitio que no sea el ordenador en el que est�s sentado. Es un acceso remoto desde nuestro servidor." />
<style type="text/css">
html, body {
text-align: center;
}
#wrapper {
width: 740px;
margin: 0 auto 0 auto;
text-align: left;
padding: 10px;
background: #eee;
border: 4px outset #ccc;
}
#footer {
margin: 10px 0 0 0;
font-size: 80%;
color: #ccc;
}
#error {
border: 1px solid red;
padding: 2px;
margin: 5px 0 15px 0;
background: #eee;
}
.center { text-align: center; }
/* TOOLTIP HOVER EFFECT */
#tooltip{
width:20em; background: #fff;
}
</style>
<script type="text/javascript">ginf={url:'http://proxyanonimo.es',script:'browse.php',target:{h:'http://myurl.com',p:'/',b:'',u:'http://myurl.com'},enc:{u:'iawpK1Q337kKRtEraNzZubjsx46C64Qd4aqEZ6vR2GrHZTZXxmNPoU7JM4aGYQJROYjBUFiKbxiYh5LEhmjt4g3G83dVHKClyLMhgTRfgX1nSBPYLYhG38a11bMwMcF8',e:'',x:'',p:''},b:'12'}</script>
<script type="text/javascript" src="http://proxyanonimo.es/includes/main.js?1.4.1"></script></head>
<body>
<div id="wrapper">
<h1 class="center"><a href="index.php">Proxy Anonimo</a></h1>
<h2 class="center">IPv6 Ready!</h2>
<div id="error">Hotlinking directly to proxied pages is not permitted.</div><p style="text-align:right">[<a href="http://proxyanonimo.es/browse.php?u=http%3a%2f%2fmyurl.com&b=12&f=norefer">Reload http://myurl.com</a>]</p>
<h2>Proxy</h2>
Usa nuestro WebProxy An�nimo para comprobar como se ve una web desde otro sitio que no sea el ordenador en el que est�s sentado. Es un acceso remoto desde nuestro servidor. Si tu conexi�n tiene alguna restricci�n, con nuestro Proxy An�nimo no tendr�as que tener problema o por lo menos, asegurarte de si la web es accesible o no.
<h2>URL</h2>
<form action="includes/process.php?action=update" method="post" onsubmit="return updateLocation(this);">
<input type="text" name="u" id="input" size="60">
<!--<input type="submit" value="Go">-->
<h3>Options</h3>
<ul id="options">
<li><input type="checkbox" name="encodeURL" id="encodeURL"><label for="encodeURL" class="tooltip" onmouseover="tooltip('Encrypts the URL of the page you are viewing so that it does not contain the target site in plaintext.')" onmouseout="exit();">Encrypt URL</label></li><li><input type="checkbox" name="encodePage" id="encodePage"><label for="encodePage" class="tooltip" onmouseover="tooltip('Helps avoid filters by encrypting the page before sending it and decrypting it with javascript once received.')" onmouseout="exit();">Encrypt Page</label></li><li><input type="checkbox" name="allowCookies" id="allowCookies" checked="checked"><label for="allowCookies" class="tooltip" onmouseover="tooltip('Cookies may be required on interactive websites (especially where you need to log in) but advertisers also use cookies to track your browsing habits.')" onmouseout="exit();">Allow Cookies</label></li><li><input type="checkbox" name="tempCookies" id="tempCookies" checked="checked"><label for="tempCookies" class="tooltip" onmouseover="tooltip('This option overrides the expiry date for all cookies and sets it to at the end of the session only - all cookies will be deleted when you shut your browser. (Recommended)')" onmouseout="exit();">Force Temporary Cookies</label></li><li><input type="checkbox" name="stripTitle" id="stripTitle"><label for="stripTitle" class="tooltip" onmouseover="tooltip('Removes titles from proxied pages.')" onmouseout="exit();">Remove Page Titles</label></li><li><input type="checkbox" name="stripJS" id="stripJS"><label for="stripJS" class="tooltip" onmouseover="tooltip('Remove scripts to protect your anonymity and speed up page loads. However, not all sites will provide an HTML-only alternative. (Recommended)')" onmouseout="exit();">Remove Scripts</label></li><li><input type="checkbox" name="stripObjects" id="stripObjects"><label for="stripObjects" class="tooltip" onmouseover="tooltip('You can increase page load times by removing unnecessary Flash, Java and other objects. If not removed, these may also compromise your anonymity.')" onmouseout="exit();">Remove Objects</label></li> </ul>
</form>
<br>
<br><br><br>
<p><a href="http://s07.flagcounter.com/more/xu5M"><img src="http://s07.flagcounter.com/count/xu5M/bg=FFFFFF/txt=000000/border=CCCCCC/columns=8/maxflags=248/viewers=De+donde+nos+visitan/labels=1/pageviews=1/" alt="free counters" border="0"></a></p>
<div id="eXTReMe"><a href="http://extremetracking.com/open?login=proxyes">
<img src="http://t1.extreme-dm.com/i.gif" style="border: 0;"
height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a>
<script type="text/javascript"><!--
EXref="";top.document.referrer?EXref=top.document.referrer:EXref=document.referrer;//-->
</script><script type="text/javascript"><!--
var EXlogin='proxyes' // Login
var EXvsrv='s10' // VServer
EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"?
EXb=EXs.colorDepth:EXb=EXs.pixelDepth;EXsrc="src";
navigator.javaEnabled()==1?EXjv="y":EXjv="n";
EXd=document;EXw?"":EXw="na";EXb?"":EXb="na";
EXref?EXref=EXref:EXref=EXd.referrer;
EXd.write("<img "+EXsrc+"=http://e1.extreme-dm.com",
"/"+EXvsrv+".g?login="+EXlogin+"&",
"jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&",
"l="+escape(EXref)+" height=1 width=1>");//-->
</script><noscript><div id="neXTReMe"><img height="1" width="1" alt=""
src="http://e1.extreme-dm.com/s10.g?login=proxyes&j=n&jv=n" />
</div></noscript></div>
<p class="center">Powered by <a href="http://www.glype.com/">Glype</a>® v1.4.1.</p>
</div>
<script type="text/javascript">
var infolinks_pid = 1993344;
var infolinks_wsid = 0;
</script>
<script type="text/javascript" src="http://resources.infolinks.com/js/infolinks_main.js"></script>
</body>
</html>
然后......这可能会这样做吗?
我缺少什么?。
也许我正在尝试的网络代理服务正在重新限制我的某些东西?也许另一种网络代理服务可以帮助我更好地满足我的需求?。
答案 0 :(得分:5)
我建议您使用直接代理IP:端口,例如115.238.225.26:80。然后,您可以使用下一个代码轻松处理问题:
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();
}
然后在结果变量中,您将找到结果页面内容或空字符串,以防出现一些问题(respStream == null)。此外,如果发生任何连接问题,可能需要为此代码添加异常处理。
答案 1 :(得分:5)
您似乎遇到的主要问题是您正在使用的代理示例需要POST来更新您尝试浏览代理的目标网址。这就是为什么您没有从目标网页获取任何内容以及错误消息
<div id="error">Hotlinking directly to proxied pages is not permitted.</div>
我不知道您的代码是什么样的,但似乎您可以使用HttpWebRequest POST Method
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();
您需要查找或托管返回页面HTML的代理,例如http://www.glype-proxy.info/。即便如此,为了使代理能够正常运行,它必须将页面资源的链接更改为它自己的代理&#34;路径。
http://www.glype-proxy.info/browse.php?u=https%3A%2F%2Fwww.example.com%2F&b=4&f=norefer
在上面的URL中,如果您需要原始资源的路径,则必须找到已重定向的所有资源,并将作为u=
参数传入的路径取消编码为此特定的代理。此外,您可能希望忽略代理注入的其他元素,在本例中为<div id="include">
元素。
我相信您使用的代理的工作方式与&#34; Glype&#34;相同。我在本例中使用过的代理,但在发布时我无法访问它。此外,如果您想使用其他代理,您可能需要注意许多代理在iFrame中显示结果(可能用于XSS预防,导航或蒙皮)。
注意:通常,在内置API之外使用其他服务是一种不好的做法,因为服务通常会获得GUI更新或其他可能会破坏脚本的更改。此外,这些服务可能会遇到中断或被取消。