论坛首页 编程语言技术论坛

并不是加了随机ua和代理一定就能逃过反爬

浏览 259 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2021-08-20  
对于一些刚入行的爬虫同学来说,经常在写爬虫的时候,觉得只要自己每次请求都使用不同的代理 IP,每次请求的 Headers 都写得跟浏览器的一模一样,就不会被网站发现,成功的获取到数据。
但实际上,大家想的简单了,每个网站都一套自己的识别技术,它是不会随着你更换 IP 或者 User-Agent 而改变的。而且即使你不使用模拟浏览器,直接使用python等手段也是不行的,只要网站发现某个拥有特定符号的客户端持续高频率请求网站,它就可以把你封掉。
可能有的同学不相信?那我证明给你们看。现在,我准备一个隧道代理,我们打开一个网站https://ja3er.com/json . 当你用电脑浏览器打开它的时候,它是这样的:
不论你怎么刷新网页,这上面的字符串都是不会变的。接下来我们加上代理然后发请求
// 要访问的目标页面
string targetUrl = "https://ja3er.com/json";


// 代理服务器(产品官网 www.16yun.cn)
string proxyHost = "http://t.16yun.cn";
string proxyPort = "31111";

// 代理验证信息
string proxyUser = "16JNESCP";
string proxyPass = "676244  ";

// 设置代理服务器
WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);


ServicePointManager.Expect100Continue = false;

var request = WebRequest.Create(targetUrl) as HttpWebRequest;

request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.Method    = "GET";
request.Proxy     = proxy;

//request.Proxy.Credentials = CredentialCache.DefaultCredentials;

request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);

// 设置Proxy Tunnel
// Random ran=new Random();
// int tunnel =ran.Next(1,10000);
// request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));


//request.Timeout = 20000;
//request.ServicePoint.ConnectionLimit = 512;
//request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";
//request.Headers.Add("Cache-Control", "max-age=0");
//request.Headers.Add("DNT", "1");


//String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));
//request.Headers.Add("Proxy-Authorization", "Basic " + encoded);

using (var response = request.GetResponse() as HttpWebResponse)
using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
    string htmlStr = sr.ReadToEnd();
}
从访问的情况可以看到,虽然我使用了隧道代理,每次请求的 IP 都是不一样的,但是这个网站返回的内容始终是一样的。所以如果这不是一个测试网站,而是一个加了这个检测机制的网站,那么它轻松就能把我给屏蔽了。所以在访问比较严格的网站的时候,各种应对策略是需要做足的。
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics