python爬虫 - 代理ip正确使用方法

        主要内容:代理ip使用原理,怎么在自己的爬虫里设置代理ip,怎么知道代理ip是否生效,没生效的话哪里出了问题,个人使用的代理ip(付费)。

目录

代理ip原理

输入网址后发生了什么呢?

代理ip做了什么呢?

为什么要用代理呢?

爬虫代码中使用代理ip

代理ip的获取

检验代理ip是否生效

未生效问题排查

1.请求协议不匹配

2.代理失效


代理ip原理

输入网址后发生了什么呢?

1.浏览器获取域名

2.通过DNS协议获取域名对应服务器的ip地址

3.浏览器和对应的服务器通过三次握手建立TCP连接

4.浏览器通过HTTP协议向服务器发送数据请求

5.服务器将查询结果返回给浏览器

6.四次挥手释放TCP连接

7.浏览器渲染结果

其中涉及到了:

应用层:HTTP和DNS

传输层:TCP UDP

网络层:IP ICMP ARP

代理ip做了什么呢?

简单来说,就是:

原本你的访问

使用代理后你的访问

为什么要用代理呢?

        因为我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。而代理ip就避免了这个问题:

爬虫代码中使用代理ip

就像是请求时伪装头一样,伪装ip,注意是 { }

proxies = {
           'https':'117.29.228.43:64257',
           'http':'117.29.228.43:64257'
       }

requests.get(url, headers=head, proxies=proxies, timeout=3) #proxies

代理ip的获取

        像我们刚刚的proxies存储的代理,是可以直接作为参数传进requests里面使用的。那现在我们就来做这个proxies

        首先打开一个代理IP提供商,大家也可以从网上搜,百度一大堆(不打广告了,几乎所有代理ip我记得新用户注册都有赠送的试用),我们一般使用api获取,也就是接口直接获取我们需要的ip,由供应商返回提供给我们的ip信息:

        我这里从URL点击进去使用api来做示范,会生成一个url链接,我们requests直接请求这个链接,就可以获得代理IP详细信息。


# 这里参数控制了数量 格式 和ip协议等等 这也算是它的一个优势吧,多的话可以提取几百,而且可以指定城市从固定地点提取ip,更符合爬虫模拟人类的行为特征。
url = "http://xxxxxxxxx/getProxyIp?num=1&return_type=txt&lb=1&sb=0&flow=1&regions=&protocol=http"

# 输出ip
res = requests.get(url)
print(res.text)
# 这个ip就可以放在我们实际要请求的网页requests中了

检验代理ip是否生效

我们访问一个网站,这个网站会返回我们的ip地址:

print(requests.get('http://httpbin.org/ip', proxies=proxies, timeout=3).text)

        划重点,我使用代理IP进行访问,如果返回来不是我的IP,说明代理ip可用,可以伪装,也可以帮我们带回想要的信息。

我们看一下我使用了四个不同的代理ip,全部生效了,

未生效问题排查

如果你返回的还是本机地址,99%试一下两种情况之一:

1.请求协议不匹配

简单来说就是,如果你请求的是http,就要用http的协议,如果是https,就要用https的协议。

如果我请求是http ,但只有https,就会使用本机ip。

        划重点,我们获取的代理是两种都支持的,但是要自己向我那样配置,就像是买了鸟,你不给它飞的空间,那当然是飞不起来的,这属于我们自己的问题。

2.代理失效

        这就不是我们的问题了。所谓便宜没好货,好货不便宜。如果确实大规模爬虫是必须的话,还是买代理ip比较好,网上广告满天飞的某些代理实际性价比有些低了,自己常用的已经在上面分享了,其他的不了解就不做过多推荐了。

        当然如果你是业余爱好,那也可以从网上找一些免费的代理玩玩,但是效果确实不怎么好。。。。。

  • 75
    点赞
  • 319
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
Python代理IP是指在Python编程语言中使用代理服务器来进行网络请求的方法代理服务器可以帮助掩盖真实的IP地址,增加请求的安全性和隐私性。在Python中,有多种方法可以使用代理IP进行网络请求。 一种常用的方法使用requests库。通过设置代理IP的地址和端口号,可以将请求发送到代理服务器,并由代理服务器代为发送到目标网站。例如,可以使用如下代码设置代理IP并发起请求: import requests # 设置代理IP proxy_ip = "http://127.0.0.1:8888" # 设置代理信息 proxies = {"http": proxy_ip} # 发起请求 response = requests.get("http://www.baidu.com", proxies=proxies) # 打印请求结果 print(response.text) 这段代码使用了requests库的get方法,通过设置proxies参数将请求发送到指定的代理IP。需要注意的是,代理IP的格式为"http://IP地址:端口号",根据实际情况修改为有效的代理IP地址和端口号。 总结来说,Python提供了多种使用代理IP方法,可以根据具体需求选择适合的方式。使用代理IP可以帮助提高请求的安全性和隐私性,同时也可以实现更灵活的网络请求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [如何在Python使用代理IP?](https://blog.csdn.net/wq10_12/article/details/131636672)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊昊该干饭了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值