鱼C论坛

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

代理ip使用 不是连不上 就是用的还是主机ip

[复制链接]
发表于 2016-7-28 14:49:34 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 mozzielx 于 2016-7-28 14:52 编辑

1.代理ip使用 不是连不上 就是用的还是主机ip?
2.想用ip_dict = dict(zip(keys,values) ,但是结果只有两个元素?

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Jul 28 13:15:02 2016

  4. @author: mozzielx
  5. """
  6. import urllib.request
  7. import random
  8. from urllib.request import urlopen,Request
  9. from bs4 import BeautifulSoup

  10. ip_dict={}
  11. keys=[]
  12. values=[]
  13. #with open('代理ip.txt' , 'w') as f:
  14. for page in range(1, 3):#获取前9页
  15.     url= 'http://www.xici.net.co/nn/' + str(page)
  16.     req = Request(url)
  17.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36')
  18.     html_doc = urlopen(req).read()
  19.         
  20.     soup = BeautifulSoup(html_doc,'lxml')
  21.     trs = soup.find('table', id='ip_list').find_all('tr')
  22.     for tr in trs[1:]:
  23.         tds = tr.find_all('td')
  24.         ip = tds[1].text.strip()
  25.         port = tds[2].text.strip()
  26.         protocol = tds[5].text.strip()
  27.         keys.append(protocol)
  28.         values.append(ip + r':' + port)
  29. ip_dict = dict(zip(keys,values)

  30. #代理使用        

  31. ip_num = random.randint(0,len(keys) + 1)
  32. proxy_support = urllib.request.ProxyHandler({keys[ip_num]:values[ip_num]})
  33. print(keys[ip_num],values[ip_num])#打印选择的ip
  34. opener = urllib.request.build_opener(proxy_support)
  35. opener.addhandlers = [('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36')]
  36. urllib.request.install_opener(opener)

  37. #查看所用ip,与上文打印的ip进行比较
  38. url='http://www.whatismyip.com.tw'#查询ip地址的网站
  39. temp = urlopen(url)
  40. html = temp.read().decode('utf-8')
  41. print(html)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-28 17:02:58 | 显示全部楼层
本帖最后由 SixPy 于 2016-7-28 18:32 编辑

urllib 的 代理机制 有Bug,不能隐藏 IP

这是 requests 的例子
  1. import requests as req
  2. prxy='http://60.169.78.218:808'  #随便选了个代理,如果失效就自己换。
  3. url='http://1212.ip138.com/ic.asp' #查询 IP
  4. ssn=req.Session()
  5. ssn.proxies={'http':prxy}
  6. ssn.headers={'User-Agent':'Mozilla/5.0'}
  7. rsp=ssn.get(url)
  8. rsp.encoding='gb2312'
  9. print(rsp.text)
  10. ssn.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-28 18:30:06 | 显示全部楼层
SixPy 发表于 2016-7-28 17:02
urllib 的 代理机制 有Bug,不能隐藏 IP

这是 requests 的例子

好的  谢谢版主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-28 18:38:55 | 显示全部楼层
SixPy 发表于 2016-7-28 17:02
urllib 的 代理机制 有Bug,不能隐藏 IP

这是 requests 的例子

然而我又失败了0.0
  1. import requests as req
  2. import pickle
  3. import random



  4. file1 = open('代理keys.plk','rb')   
  5. keys = pickle.load(file1)
  6. fiel2 = open('代理values.plk','rb')
  7. values = pickle.load(fiel2)

  8. ip_num = random.randint(0,len(keys) + 1)
  9. url='http://1212.ip138.com/ic.asp' #查询 IP
  10. ssn=req.Session()
  11. ssn.proxies={keys[ip_num]:values[ip_num]}
  12. ssn.headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36'}
  13. rsp=ssn.get(url)
  14. rsp.encoding='gb2312'
  15. print(rsp.text)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-28 18:41:58 | 显示全部楼层
mozzielx 发表于 2016-7-28 18:38
然而我又失败了0.0

你先别搞复杂代码阿
手写代理ip进去
试试看 能不能用
然后在加其他的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-28 18:51:55 | 显示全部楼层
换了个代理,还是可以的~~
  1. import requests as req
  2. prxy='http://119.6.136.122:80'  #随便选了个代理,如果失效就自己换。
  3. url='http://1212.ip138.com/ic.asp' #查询 IP
  4. ssn=req.Session()
  5. ssn.proxies={'http':prxy}
  6. ssn.headers={'User-Agent':'Mozilla/5.0'}
  7. try:
  8.     rsp=ssn.get(url)
  9.     rsp.encoding='gb2312'
  10.     print(rsp.text)
  11. except Exception as e:
  12.     print(e)
  13. finally:
  14.     print('close')
  15.     ssn.close()
复制代码

结果:
  1. >>>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=gb2312">
  5. <title> 您的IP地址 </title>
  6. </head>
  7. <body style="margin:0px"><center>您的IP是:[119.6.136.122] 来自:四川省德阳市 联通</center></body></html>
  8. close
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-28 19:52:46 | 显示全部楼层
SixPy 发表于 2016-7-28 18:51
换了个代理,还是可以的~~

结果:

谢谢 版主大人
我发现 之前之所以一直显示本机ip 是因为proxy{‘HTTP’:‘xxxxxxxxxxxx’}中‘HTTP'’大写
虽然不知道为什么0.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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