今日头条
在爬虫访问目标网站的过程中,很多网站为了避免被恶意访问,需要设置验证码登录,这样是为了避免非人类的访问。今天我们学习下如何使用Python爬虫实现验证码登录并且将生成的验证码保存下来,然后人为输入后,包装后再POST给服务器,实现验证,这里还涉及到了Cookie和代理ip,cookie都是随机生成的。这里主要讲下代理ip的使用,因为不管网站是以什么方式进行验证,ip都是最基础的。因为目标网站一般都是从最基层的访问ip开始进行限制访问。
这里我们使用python简单的示例下,借鉴了www.16yun.cn他们家提供的demo:
// 要访问的目标页面 string targetUrl = "http://httpbin.org/ip"; // 代理服务器(产品官网 www.16yun.cn) string proxyHost = "http://t.16yun.cn"; string proxyPort = "31111"; // 代理验证信息 string proxyUser = "username"; string proxyPass = "password"; // 设置代理服务器 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();
demo里面主要是给大家示例了隧道代理的使用方式,是一种比较好用的代理方式。上述是小编给大家介绍的Python爬虫实现验证码登录详解整合和代理的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
编辑:ymf
全部0条评论
快来发表一下你的评论吧 !