python爬虫 隐藏身份及设置代理

User-Agent

当我们使用爬虫访问各大网站时,可能会被网站发现访问者只是一段python写出的代码,从而拒绝我们的访问,如果想要解决这个问题,我们可以去修改user-agent。
首先,我们需要打开我们的浏览器,通过审查元素找到我们的user-agent
在这里插入图片描述一般通过一下两种方法来添加
1.add_headers方法

 req = request.Request(url)
 req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36')

2.设置一个head字典,作为参数传进去

head = {}
head = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
rep = urllib.request.Request(url, data, head)

延时访问

当我们在同一地址下多次访问时,有可能会被服务器给禁止访问,所以我们可以使用两种方法来解决,一种是延时访问,一种是设置代理
如果需要延时访问,我们只需要在每一次访问后停止一段时间即可,可以使用time模块中的sleep函数来完成

time.sleep(3)

设置代理

我们可以考虑使用代理ip来访问来解决这个问题,对于代理服务器我们可以在google上面随便找一找
在这里插入图片描述
在这里插入图片描述
我们可以随便找几个代理ip,然后用random模块的choice函数来随机选择

iplist = ['36.25.243.51:80', '59.56.28.199:80', '39.106.223.134:80']
proxy = urllib.request.ProxyHandler({'http':random.choice(iplist)})

如果访问量大的话可以考虑去爬取大量的代理ip

首先我们要创建一个opener

opener = urllib.request.build_opener(proxy)

然后安装这个opener

urllib.request.install_opener(opener)

之后即可通过普通的方式访问了,访问之前可以试试有没有成功用上代理,有很多可以查询自己Ip地址的网站

在这里插入图片描述
返回的ip正好是我们表中的第二个代理Ip
当返回的ip和自己设置的代理ip相同时即成功使用代理

import urllib.request
import random

url = 'http://whatismyip.host/'
iplist = ['36.25.243.51:80', '59.56.28.199:80', '39.106.223.134:80']
proxy = urllib.request.ProxyHandler({'http':random.choice(iplist)})

opener = urllib.request.build_opener(proxy)
                 
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36')]
urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

print(html)
发布了60 篇原创文章 · 获赞 78 · 访问量 6322

猜你喜欢

转载自blog.csdn.net/qq_35423154/article/details/104241720