鱼C论坛

 找回密码
 立即注册
查看: 2572|回复: 5

[已解决]【求助】Python关于使用不同IP 地址访问网页的问题

[复制链接]
发表于 2020-2-6 15:47:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬好。

我想问一个关于Python使用不同IP地址的问题。这其实是小甲鱼入门学Python 055 一只爬虫的自我修养:隐藏 的课堂例子。


问题描述:

使用不同的IP地址来打开一个检测IP地址的网页。
在返回的一大串字符里可以看到IP地址确实会有改变。

代码如下:(IP 地址的那个列表是我新找的IP 地址, User-Agent也换成了我电脑的,其余的我直接用的是小甲鱼的代码,没有改动)
import urllib.request
import random

url = 'http://www.whatismyip.com.tw'

iplist = ['39.137.95.71:80', '36.25.243.51:80', '39.137.95.73:8080']

proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})

opener = urllib.request.build_opener(proxy_support)
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)

问题:
我尝试运行上面的代码,结果一直报错:urllib.error.HTTPError: HTTP Error 502: Bad Gateway
我试了试其他一下检测IP 地址的网站, 比如:http://www.myipaddress.com/show-my-ip-address/
结果虽然没有报错,但是在返回的一大推字符里我却找不到IP地址。(如果直接打开http://www.myipaddress.com/show-my-ip-address/,我是可以看到我电脑的IP 地址的)

请问这是为啥?怎样解决?

谢谢!
最佳答案
2020-2-6 17:52:56
qingzk 发表于 2020-2-6 17:25
谢谢回复。

我试了一下。用我自己本来的IP 地址是可以运行的。在返回的字符串中能也找到我自己的IP 地 ...

大概是代理的问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 15:54:37 | 显示全部楼层
问题1 第062课:502Bad  Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应,是http错误.你试一下http://www.whatismyip.com,去掉tw
问题二http://www.myipaddress.com/show-my-ip-address/ 这个网站有时候需要输入验证码验证
希望能帮到你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 16:10:54 | 显示全部楼层
dlnb526 发表于 2020-2-6 15:54
问题1 第062课:502Bad  Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的 ...

谢谢回复!
用了http://www.whatismyip.com之后还是报错:urllib.error.HTTPError: HTTP Error 502: Bad Gateway
hmm...是的,http://www.myipaddress.com/show-my-ip-address/ 有时候确实需要验证码验证
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 16:16:24 | 显示全部楼层
qingzk 发表于 2020-2-6 16:10
谢谢回复!
用了http://www.whatismyip.com之后还是报错:urllib.error.HTTPError: HTTP Error 502: Bad ...

按照百度百科的说法
  1. 简单来说,502是报错类型代码 bad gate way 错误的网关。产生错误的原因是连接超时,我们向服务器发送请求,由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。
  2. 最好的解决办法是在服务器上做,但是很难实现,可以选择在服务器上刷新。刷新是有两种的。所谓刷新其实就是从服务器下载数据到本地的内存或硬盘缓冲区中,再从本地内存或硬盘中读取数据到浏览器显示给我们看。
  3. ①基本刷新:点击刷新或者使用F5快捷键
  4. 基本刷新有可能只是从本地的硬盘重新拿取数据到浏览器,并不一定重新向服务器发出请求。大部分用户很多时候都是这样刷新的,遇到502报错就没有任何效果。
  5. ②从服务器刷新: 如果重新直接点击你想要浏览的网页链接,你会发现显示"502 bad gateway"错误信息的页面在点击链接后又可以正常浏览。当点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。
复制代码

以及
  1. 错误的原因:
  2.     网络不同, 不能访问web服务器, 有可能断网, 开启了防火墙等, 可以通过ping命令来定位
复制代码


你试试用浏览器能打开这些网站吗,如果能打开试试用本地ip直接访问,如果不能,可能是无力回天了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 17:25:31 | 显示全部楼层
dlnb526 发表于 2020-2-6 16:16
按照百度百科的说法

以及

谢谢回复。

我试了一下。用我自己本来的IP 地址是可以运行的。在返回的字符串中能也找到我自己的IP 地址。
这就神奇了。难道是网站不允许我用其他的IP登录?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 17:52:56 | 显示全部楼层    本楼为最佳答案   
qingzk 发表于 2020-2-6 17:25
谢谢回复。

我试了一下。用我自己本来的IP 地址是可以运行的。在返回的字符串中能也找到我自己的IP 地 ...

大概是代理的问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-4 01:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表