鱼C论坛

 找回密码
 立即注册
查看: 1245|回复: 6

代码问题

[复制链接]
发表于 2020-7-4 13:21:57 | 显示全部楼层 |阅读模式

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

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

x
import urllib.request
import random#随机使用ip
#访问一个网站,该网站的作用是自动返回你的ip
url='http://www.whatismyip.com.tw'

iplist=['119.6.144.73:81','183.203.208.166:8118','111.1.32.28:81']
#第一步搜索‘代理Ip’里面有对应的服务器和相应的端口号
proxy_support=urllib.request.ProxyHandler({'http':random.choice(iplist)})

#创建一个opener(固定)
opener=urllib.request.build_opener(proxy_support)
#防止网站识别出python或请求太频繁而禁止操作
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36')]

#安装一个opener
urllib.request.install_opener(opener)
#访问
response=urllib.request.urlopen(url)
html=response.read().decode('utf-8')

print(html)
这个代码是爬虫代理那一块隐藏用户ip的我照着小甲鱼的代码一行一行打的出错了,不知道问题出在哪里?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-4 13:23:54 | 显示全部楼层

甲鱼哥的查 IP 的网站好像已经挂了,你换个网站就行: https://httpbin.org/get
import urllib.request
import random#随机使用ip
#访问一个网站,该网站的作用是自动返回你的ip
url='https://httpbin.org/get'

iplist=['119.6.144.73:81','183.203.208.166:8118','111.1.32.28:81']
#第一步搜索‘代理Ip’里面有对应的服务器和相应的端口号
proxy_support=urllib.request.ProxyHandler({'http':random.choice(iplist)})

#创建一个opener(固定)
opener=urllib.request.build_opener(proxy_support)
#防止网站识别出python或请求太频繁而禁止操作
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36')]

#安装一个opener
urllib.request.install_opener(opener)
#访问
response=urllib.request.urlopen(url)
html=response.read().decode('utf-8')

print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-4 13:36:22 | 显示全部楼层
Twilight6 发表于 2020-7-4 13:23
甲鱼哥的查 IP 的网站好像已经挂了,你换个网站就行: https://httpbin.org/get

能运行,但是怎么看出来的结果是不是我们想要看到的呢?代码的初衷是改变用户的ip然后访问网站使用ip列表里面的ip地址,但是我运行出来的得到的ip地址好像不是定义的ip地址里面的ip啊??能运行一下然后通过运行结果解释一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-4 14:05:37 | 显示全部楼层
Twilight6 发表于 2020-7-4 14:00
我也没搞明白,我允许发现也是只返回自己的IP

opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36')]。好吧,那能解释一下这句代码的作用吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 14:10:47 | 显示全部楼层
波大大12138 发表于 2020-7-4 14:05
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,  ...




这个就是模仿浏览器访问的意思,括号里面的是浏览器的型号,版本等信息,就是你浏览网站的时候,发出请求会带上自己浏览器的信息

然后通过这些,告诉网站,我这个是 通过浏览器访问的,这是爬虫最基本的伪装
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 14:13:36 | 显示全部楼层
本帖最后由 丿章鱼哥 于 2020-7-4 14:15 编辑
波大大12138 发表于 2020-7-4 14:05
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,  ...


这一行是访问网站时你的浏览器信息,如果没有这行你用爬虫访问网站你的User-Agent就显示的是默认的python.....,这样的话一般网站都会有防爬措施,你的爬虫可能就没法访问了。比如你的浏览器就是谷歌的,系统是64位win10.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 14:28:39 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-4 14:40 编辑
波大大12138 发表于 2020-7-4 14:05
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,  ...




这样就可以了,刚刚我测试成功了,IP重新去网上找了几个:

1.png
import urllib.request
import random#随机使用ip
#访问一个网站,该网站的作用是自动返回你的ip
url='http://httpbin.org/get'

iplist=['18.25.13.185:8118','1.198.72.44:9999','123.169.124.88:9999']
#第一步搜索‘代理Ip’里面有对应的服务器和相应的端口号
proxy_support=urllib.request.ProxyHandler({'http':random.choice(iplist)})

#创建一个opener(固定)
opener=urllib.request.build_opener(proxy_support)
#防止网站识别出python或请求太频繁而禁止操作
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36')]

#安装一个opener
urllib.request.install_opener(opener)
#访问
response=urllib.request.urlopen(url)
html=response.read().decode()

print(html)




评分

参与人数 1荣誉 +1 收起 理由
陈尚涵 + 1 我赞成

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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