proxyHander实现代理ip

ProxyHanddler处理器(代理设置)

  • 很多网站会检测某一段时间某个ip的访问次数(通过流量统计、系统日志等),如果访问次数多的不像正常人,它会禁止这个ip访问。所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算ip被禁止,依然可以换个ip继续爬取。
  • 代理的原理:在请求目的网站之前,先请求代理服务器,然后让代理服务器去请求目的网站,代理服务器拿到目的网站的数据后,再转发给我们的代码。
  • urllib中通过ProxyHandler来设置使用代理服务器,下面代码说明如何使用自定义opener来使用代理:
from urllib import request

# 这个是没有使用代理的
# resp = request.urlopen('http://httpbin.org/get')
# print(resp.read().decode('utf-8'))

#使用代理
# 1.使用ProxyHandler,传入代理构建一个handler
handler = request.ProxyHandler({'http':'218.75.158.153:3128'})
# 2.使用上面创建的handler构建一个opener
opener = request.build_opener(handler)
# 3.使用opener发送请求
resp = opener.open('http://httpbin.org/ip')
print(resp.read())
  • 常用的代理有:
    1. 西刺免费代理IP:http://www.xicidaili.com/
    2. 快代理:http://www.kuaidaili.com
    3. 代理云:http://www.dailiyun.com

cookie:

  • 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4kb。因此使用cookie只能存储一些小量的数据。

  • cookie的格式:
    Set-Cookie:NAME=VALVE;Expires/Max-age=DATE; Path = PATH; Domain=DOMAIN_NAME;SECURE

  • 参数意义:

    1. NAME:cookie的名字。
    2. VALUE:cookie的值。
    3. Expires:cookie的过期时间。
    4. Path:cookie的作用路径。
    5. Domain: cookie作用的域名。
    6. SECURE: 是否只在https协议下起作用。

使用cookielib库和HTTPCookieProcessor模拟登录:

  • Cookie是指网站服务器为了辨别用户身份和进行Session跟踪,而存储在用户浏览器上的文本文件,Cookie可以保持登录信息到用户下次与服务器的会话。
  • 这里以人人网为例。人人网中,要访问某个人的主页,必须先登录才能访问,登录说白了就是要有cookie信息。那么如果我们想要用代码的方式访问,就必须要有正确的cookie信息才能访问。解决方案有两种,第一种是使用浏览器访问,然后将cookie信息复制下来,放在headers中。示例代码如下:
     from urllib import  request
    
     headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3941.4 Safari/537.36',
         'Cookie':'anonymid=k8o9lndz-1pq1zx; depovince=GW; _r01_=1; JSESSIONID=abcvV0tpZWZYs9okVYofx; ick_login=046b1db3-c7a4-491c-926c-00b98b1563c7; taihe_bi_sdk_uid=89d7ffba8a20e22a2db2dbb27d9ca92e; taihe_bi_sdk_session=fc5d98b0379b4846379453cd1607ae95; _de=2F7D29EE7B663D87D285B0FE632841936DEBB8C2103DE356; ick=cd7660f3-5950-44e3-82ee-814940efd9b6; __utma=151146938.1635044798.1586164939.1586164939.1586164939.1; __utmc=151146938; __utmz=151146938.1586164939.1.1.utmcsr=renren.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmt=1; __utmb=151146938.1.10.1586164939; t=f63f206723d00f577dd05f528d03a49d1; societyguester=f63f206723d00f577dd05f528d03a49d1; id=974170071; xnsid=b132d346; jebecookies=6c0e1f54-9164-41af-8b2c-3e0a1c78839f|||||; ver=7.0; loginfrom=null; wp_fold=0'
     }
     req = request.Request('http://www.renren.com/880151247/profile',headers=headers)
     reqs = request.urlopen(req)
     print(reqs.read().decode('utf-8'))
    
  • 但是每次在访问需要Cookie的页面都要从浏览器中复制cookie比较麻烦。在Python处理Cookie,一般是通过http.cookiejar模块和urllib模块的HTTPCookieProcessor处理器类一起使用。http.cookiejar模块主要作用是提供用于存储cookie的对象。而HTTPCookieProcessor处理器主要作用是处理这些cookie对象,并构建handle对象。
http.cookiejar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值