鱼C论坛

 找回密码
 立即注册
查看: 8996|回复: 12

[已解决]小甲鱼python56讲中使用代理ip问题

[复制链接]
发表于 2020-9-21 16:43:23 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼视频中www.whatismyip.com.tw 大陆用不了
就自己找了个测ip的网站http://ip.t086.com
然后找了代理ip的网站https://proxy.mimvp.com/freeopen
代码如下
import urllib.request
url='http://ip.t086.com/'
proxy_support=urllib.request.ProxyHandler({'http':'118.24.88.66:1080'})
opener=urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
response=urllib.request.urlopen(url)
html=response.read().decode('GBK')
print(html)
试了很多很多全是失败的
是测IP网站的问题还是 代理本身的问题 还是我的代码有问题啊
最佳答案
2020-9-21 22:21:40
阿匠 发表于 2020-9-21 22:11
那我改怎样用python检查我有没有用了代理ip啊。难受住…

那不知道,而且我的代码也不对,用的是http的IP上https,也不能证明这个IP是否有效
这段代码应该是对的,应该是没找到能上网的IP,多试几个试试看
  1. import requests
  2. '''代理IP地址(高匿)'''
  3. proxy = {
  4.   'http': 'http://117.85.105.170:808',
  5.   'https': 'https://117.85.105.170:808'
  6. }
  7. '''head 信息'''
  8. head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
  9.        'Connection': 'keep-alive'}
  10. '''http://icanhazip.com会返回当前的IP地址'''
  11. p = requests.get('http://icanhazip.com', headers=head, proxies=proxy)
  12. print(p.text)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 20:13:59 | 显示全部楼层
可以试试这个
https://www.kuaidaili.com/free/
这个试下来是可以的

  1. import requests
  2. url='https://www.kuaidaili.com/free/'
  3. headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}
  4. proxy={'http':'118.212.106.81:9999'}
  5. response=requests.get(url=url,headers=headers,proxies=proxy)
  6. print(response)
  7. html=response.content.decode()
  8. print(html)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 21:15:23 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 20:13
可以试试这个
https://www.kuaidaili.com/free/
这个试下来是可以的


我想实现小甲鱼课件中那样的效果,可以帮帮我吗大佬,requests我还没学到- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 21:23:00 | 显示全部楼层
阿匠 发表于 2020-9-21 21:15
我想实现小甲鱼课件中那样的效果,可以帮帮我吗大佬,requests我还没学到- -

不知道你说的效果是什么。。。。。。。

requests模块不是更方便么,为什么不用呢?都是一样的步骤
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 21:28:35 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 21:23
不知道你说的效果是什么。。。。。。。

requests模块不是更方便么,为什么不用呢?都是一样的步骤

我的意思是想用一个ip查询的网站来检查我现在使用的ip地址是多少,然后在idle里面打印出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 22:07:55 | 显示全部楼层
阿匠 发表于 2020-9-21 21:28
我的意思是想用一个ip查询的网站来检查我现在使用的ip地址是多少,然后在idle里面打印出来


尝试了下
http://icanhazip.com
http://httpbin.org/ip
这两个应该是检测当前上网IP的
但是都不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 22:11:53 From FishC Mobile | 显示全部楼层
疾风怪盗 发表于 2020-9-21 22:07
尝试了下
http://icanhazip.com
http://httpbin.org/ip

那我改怎样用python检查我有没有用了代理ip啊。难受住…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 22:21:40 | 显示全部楼层    本楼为最佳答案   
阿匠 发表于 2020-9-21 22:11
那我改怎样用python检查我有没有用了代理ip啊。难受住…

那不知道,而且我的代码也不对,用的是http的IP上https,也不能证明这个IP是否有效
这段代码应该是对的,应该是没找到能上网的IP,多试几个试试看
  1. import requests
  2. '''代理IP地址(高匿)'''
  3. proxy = {
  4.   'http': 'http://117.85.105.170:808',
  5.   'https': 'https://117.85.105.170:808'
  6. }
  7. '''head 信息'''
  8. head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
  9.        'Connection': 'keep-alive'}
  10. '''http://icanhazip.com会返回当前的IP地址'''
  11. p = requests.get('http://icanhazip.com', headers=head, proxies=proxy)
  12. print(p.text)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 22:38:26 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-21 22:40 编辑
阿匠 发表于 2020-9-21 22:11
那我改怎样用python检查我有没有用了代理ip啊。难受住…


你看这个可以了,https的代理IP,用的有道翻译的接口,返回了IP的地址信息
之前发的代码应该也有效的,就是IP有没有用不知道了,代码里加个timeout=6,超时了就说明无效IP
要检测,可以把免费IP全爬下来之后,按个检测试试,说不定能测出来哪个有效的
网址:http://www.kxdaili.com/dailiip/1/2.html
下面这个代理IP是在这上面,测试了5个后找到的
  1. import requests
  2. url='https://foundation.youdao.com/ip/ipinfo'
  3. headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}
  4. proxy={'https':'58.220.95.90:9401'}

  5. response=requests.get(url=url,headers=headers,proxies=proxy)
  6. print(response)
  7. html=response.content.decode()
  8. print(html)
复制代码

屏幕截图 2020-09-21 223610.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 12:39:48 | 显示全部楼层
试一下,爬下来,难得会有2、3个有效的免费代理IP
  1. import requests
  2. from lxml import etree
  3. import re
  4. import time

  5. class Get_Free_Ip():
  6.     def __init__(self):
  7.         self.url1='http://www.kxdaili.com/dailiip/{}/{}.html'
  8.         self.headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}

  9.     def Get_Url1_data(self):
  10.         ip_data_list1=[]
  11.         for type_num in range(0,2):
  12.             for page_num in range(0,10):
  13.                 start_url=self.url1.format(type_num+1,page_num+1)
  14.                 print(start_url)
  15.                 response=requests.get(url=start_url,headers=self.headers)
  16.                 html_str=response.content.decode()
  17.                 #print(html_str)
  18.                 patten='<td>(.*?)</td>'
  19.                 ip_data_temp=re.findall(patten,html_str)

  20.                 for each in range(0,len(ip_data_temp),7):
  21.                     ip_data = {}
  22.                     ip_data['IP地址']=ip_data_temp[each]
  23.                     ip_data['端口'] = ip_data_temp[each+1]
  24.                     ip_data['代理类型'] = ip_data_temp[each+3]
  25.                     ip_data_list1.append(ip_data)
  26.                 time.sleep(1)
  27.         #print(ip_data_list1)
  28.         return ip_data_list1


  29.     def Change_data(self,ip_data_list):
  30.         new_list=[]
  31.         for each in ip_data_list:
  32.             each['代理类型'] = each['代理类型'].split(',')
  33.             for i in each['代理类型']:
  34.                 new_list_temp = {}
  35.                 if i=='HTTP':
  36.                     new_list_temp['http'] = each['IP地址'] + ':' + each['端口']
  37.                 elif i=='HTTPS':
  38.                     new_list_temp['https'] = each['IP地址'] + ':' + each['端口']
  39.                 new_list.append(new_list_temp)
  40.         print(new_list)
  41.         return new_list

  42.     def Check_httpip(self,new_list):
  43.         '''代理IP地址(高匿)'''
  44.         new_list_active=[]
  45.         for proxy in new_list:
  46.             print(f'开始检测{proxy}...')
  47.             if 'http' in proxy.keys() :
  48.                 '''http://icanhazip.com会返回当前的IP地址'''
  49.                 try:
  50.                     response = requests.get(url='http://icanhazip.com', headers=self.headers, proxies=proxy,timeout=3)
  51.                     print(f'返回结果:{response.text}')
  52.                     new_list_active.append(proxy)
  53.                     time.sleep(1)
  54.                 except:
  55.                     print(f'{proxy}未返回结果,无效...')

  56.             elif 'https' in proxy.keys() :
  57.                 try:
  58.                     response = requests.get(url='https://foundation.youdao.com/ip/ipinfo', headers=self.headers, proxies=proxy,timeout=3)
  59.                     print(f'返回结果:{response.text}')
  60.                     new_list_active.append(proxy)
  61.                     time.sleep(1)
  62.                 except:
  63.                     print(f'{proxy}未返回结果,无效...')

  64.         print(new_list_active)

  65.         if len(new_list_active)>0:
  66.             self.Save_To_Txt(new_list_active)
  67.         else:
  68.             print('无有效免费代理IP地址')

  69.     def Save_To_Txt(self,list):
  70.         with open('免费代理IP地址.txt', mode='w', encoding='utf-8') as f:
  71.             for each in list:
  72.                 f.write(str(each))
  73.                 f.write('\n')

  74.     def Run(self):
  75.         #http://www.kxdaili.com/dailiip/1/1.html
  76.         ip_data_list1=self.Get_Url1_data()
  77.         new_list=self.Change_data(ip_data_list1)
  78.         self.Check_httpip(new_list)

  79. if __name__ == '__main__':
  80.     get_freeip=Get_Free_Ip()
  81.     get_freeip.Run()


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

使用道具 举报

 楼主| 发表于 2020-9-22 14:01:10 | 显示全部楼层
疾风怪盗 发表于 2020-9-22 12:39
试一下,爬下来,难得会有2、3个有效的免费代理IP

大佬太给力啦,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-14 19:22:41 | 显示全部楼层
我运行代码之后,用得到ip去改电脑代理之后,也不能搜索ip看到自己的ip地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-12 20:37:18 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 21:23
不知道你说的效果是什么。。。。。。。

requests模块不是更方便么,为什么不用呢?都是一样的步骤

大佬,我返回的时候idle提示我是一千多行的代码,这是咋回事啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 02:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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