python 爬取数据防止IP被封

一、使用代理IP池,利用代理IP进行爬取数据(免费的IP太难找了,示例代码中还应补充如果IP不能用,可以提示用户替换,由于用不到所以没有添加。仅供参考)
二、设置浏览器信息
三、设置连接网站动态访问时间

一、使用代理IP池,利用代理IP进行爬取数据(示例代码)

#使用代理IP池
def dynamic_IP ():              
    http_ip = ['222.242.106.7:80','11.11.11.11:80']  #使用的代理IP 
    proxy_ip = {
   
   'http': random.choice(http_ip)} # choice() 方法返回一个列表,元组或字符串的随机项。
    url = "http://www.ip111.cn/"
    html = requests.get(url=url)
    soup = BeautifulSoup(html.text, 'lxml')
    print('本机IP:', soup.find_all('p')[0].text)
    print(proxy_ip)
    try:
        html2 = requests.get(url=url, proxies=proxy_ip)
        code = html2.status_code
        soup = BeautifulSoup(html2.text, 'lxml')
        print('代理IP,可以使用:', soup.find_
### 如何在网页抓取过程中避免IP地址被目标网站锁 #### 遵守Robots协议 为了确保合法性和道德性,在启动任何爬虫项目前,务必检查目标站点的`robots.txt`文件。该文件规定了哪些路径允许访问以及哪些不允许[^1]。 ```bash curl http://example.com/robots.txt ``` 此命令可以帮助获取指定域名下的机器人协议内容。 #### 使用代理服务器 通过配置代理来改变发出请求时显示出来的源IP是一种常见做法。这不仅能够保护自己的实际位置信息不被暴露给对方服务器,而且当面对某些基于地理位置限制的内容资源时也十分有用。例如使用 Colly 库设置静态或轮换式的HTTP(S)代理: ```go package main import ( "fmt" "github.com/gocolly/colly/v2" ) func main() { c := colly.NewCollector() // 设置单个固定代理 err := c.SetProxy("http://username:password@host:port") if err != nil { fmt.Println(err) } } ``` 对于频繁更换出口节点的需求,则可以选择支持自动分配不同IP的服务提供商,如Nstproxy所提供的住宅级和数据中心类型的代理池[^3]。 #### 控制请求频率 过度快速连续地向同一台主机发送大量查询可能会引起管理员注意进而采取措施加以防范。因此合理规划时间间隔是非常必要的。可以通过调整每次发起新的连接之间等待的时间长度来实现这一点;也可以考虑多线程异步执行任务的同时保持总体速率在一个安全范围内。 #### 用户行为模拟 模仿正常用户的浏览习惯有助于减少被抓包分析的风险。比如随机化User-Agent字符串、加入Cookies管理功能等手段都可以让程序看起来更像是真实的浏览器而非自动化脚本。 ```python from fake_useragent import UserAgent ua = UserAgent() headers = {'User-Agent': ua.random} print(headers['User-Agent']) ``` 上述Python代码片段展示了如何利用第三方库生成看似来自各种设备型号的操作系统平台上的Web客户端标识符。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值