动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

如何免费构建自己的代理IP池?

发布时间:2020-12-15 16:39:27 来源:黑核动态ip代理

分享到

  网上有很多公开的免费代理IP,下面我们用爬虫爬取这些IP并进行验证。

  爬来的IP不能保证都能用,所以爬取下来后需要检验,用爬取的代理ip访问网站,看状态码,是200就证明能用

  保存到MongoDB非关系型数据库保存,mysql也行

  步骤:

  安装Mysql数据库,过程略

  python 引用 json threading BeautifulSoup

  建立多线程,在线程中爬取,检查ip是否可以使用(因为采集到的ip不一定是都能用的,只有当状态码是200的时候表明有响应,可以用),保存进数据库

  提供大量的User-Agent,为什么要这么多头的user agent呢,因为如果头都一样的话,人家很容易知道你这个是一个爬虫,所以你用很多头模仿很多用户在不同客客户端都访问就可以蒙混过关了。

如何免费构建自己的代理IP池?

  全部代码为:

  getip.py

  import json

  import requests

  import time

  import pymysql

  from iptools import header, dict2proxy

  from bs4 import BeautifulSoup as Soup

  from pymongo import MongoClient as Client

  import threading

  import random

  def get_user_agent():

  '''

  功能: 随机获取UA

  :return: 返回一个随机UA

  '''

  user_agents=[

  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",

  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",

  "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",

  "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",

  "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",

  "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",

  "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",

  "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",

  "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",

  "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",

  "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",

  "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",

  "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",

  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",

  "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",

  "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",

  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",

  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",

  "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",

  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",

  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",

  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",

  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",

  "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",

  "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",

  "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",

  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",

  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",

  "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"

  ]

  user_agent = random.choice(user_agents)

  return user_agent

  def parse_items(items):

  # 存放ip信息字典的列表

  ips = []

  for item in items:

  tds = item.find_all('td')

  # 从对应位置获取ip,端口,类型

  ip, port, _type = tds[1].text, int(tds[2].text), tds[5].text.lower()

  ips.append({'ip': ip, 'port': port, 'type': _type})

  return ips

  def check_ip(ip, good_proxies):

  try:

  pro = dict2proxy(ip)

  # print(pro)

  url = 'https://www.ipip.net/'

  r = requests.get(url, headers=header, proxies=pro, timeout=5)

  r.raise_for_status()

  except Exception as e:

  # print(e)

  pass

  else:

  good_proxies.append(ip)

  def write_to_json(ips):

  with open('proxies.json', 'w', encoding='utf-8') as f:

  json.dump(ips, f, indent=4)

  def write_to_mongo(ips):

  conn = pymysql.connect(host='xx.xx.xx.xx', user='xx', passwd='xxxxxxxxxxx', db='xx', charset="utf8")

  cursor = conn.cursor()

  cursor.execute('SET NAMES utf8;')

  cursor.execute('SET CHARACTER SET utf8;')

  cursor.execute('SET character_set_connection=utf8;')

  for i in range(len(ips)):

  print(ips[i]['ip'])

  query="""insert into pr_ip(ip,port,_type)values(%s,%s,%s)"""

  ip=ips[i]['ip']

  port=ips[i]['port']

  type1=ips[i]['type']

  values=(ip,port,type1)

  print (values,query)

  cursor.execute(query,values)

  cursor.close()

  conn.commit()

  conn.close()

  class GetThread(threading.Thread):

  '''对Thread进行封装'''

  def __init__(self, args):

  threading.Thread.__init__(self, args=args)

  self.good_proxies = []

  def run(self):

  url = 'http://www.xicidaili.com/nt/%d' % self._args[0]

  # 发起网络访问

  user_agent = get_user_agent()

  headers = {'User-Agent': user_agent}

  r = requests.get(url, headers=headers)

  r.encoding = r.apparent_encoding

  r.raise_for_status()

  soup = Soup(r.text, 'lxml')

  # 第一个是显示最上方的信息的,需要丢掉

  items = soup.find_all('tr')[1:]

  ips = parse_items(items)

  threads = []

  for ip in ips:

  # 开启多线程

  t = threading.Thread(target=check_ip, args=[ip, self.good_proxies])

  t.start()

  time.sleep(0.1)

  threads.append(t)

  [t.join() for t in threads]

  def get_result(self):

  return self.good_proxies

  if __name__ == '__main__':

  # 主函数使用多线程

  threads = []

  for i in range(1, 30):

  t = GetThread(args=[i])

  t.start()

  time.sleep(3)

  threads.append(t)

  [t.join() for t in threads]

  for t in threads:

  proxies = t.get_result()

  write_to_mongo(proxies)

  iptools.py

  '''

  头已经没用,但是拼接http和https还有用

  '''

  header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '

  'AppleWebKit/537.36 (KHTML, like Gecko) '

  'Chrome/64.0.3282.186 Safari/537.36'}

  def dict2proxy(dic):

  s = dic['type'] + '://' + dic['ip'] + ':' + str(dic['port'])

  return {'http': s, 'https': s}


相关资讯

什么代理ip软件简单方便能很好的隐藏自己的信息

网页代理是网上现在非常流行的一种东西,我们在上网浏览网页的时候都是通过浏览器进行的,每个人上网的时候都有自己的ip,这个ip就代表了你的行踪,别人可以通过追查你

来源:黑核混拨ip加速器网

2019-01-05 17:07:22

这么多的代理ip软件如何选择适合自己的

说到网络,对于做网络营销的工作人员来说,那自然是离不开代理IP的,为什么这么说呢?一般的网络业务向注册投票等,对IP都是有限制的,同一个IP在同一个网站只能投一

来源:黑核混拨ip代理

2019-01-11 11:02:28

代理ip有什么功能?能否隐藏自己的真实ip?

大数据时代下,我们需要海量的信息去帮助我们分析市场、分析用户;我们也需要在网络营销过程中做出高效的执行动作,或者控制活动不要超出预算范围;我们也需要在必要的时候

来源:黑核动态ip代理

2019-04-15 11:26:04

如何隐藏自己的ip地址?设置局部代理或全局代理

当下,网络发展比较快,用户使用网络会留下自己的记录,比如在电商行业,你的点击、习惯、喜好等等这些都可以被记录,并且可以主动推送产品信息给你。作为用户的你,可能并

来源:黑核动态ip代理

2019-06-12 10:09:03

使用代理IP真的能隐藏自己的真实IP吗

代理IP的作用越来越大,有用来做爬虫的,有用来做批量注册的,还有用来投票的等等,还有很多用来隐藏自己真实的IP,做一些不可描述的事情,也有很多朋友问,使用代理I

来源:黑核动态ip代理

2019-06-17 11:03:40

如何简单最快捷地拥有属于自己的代理IP池

很多朋友在做爬虫的时候经常用到代理IP,他们通过各种渠道购买了各种代理IP套餐,发现总有一些不如意,不能完美的达到自己预期。于是心里一种想法越来越强烈,那就是拥

来源:黑核动态ip代理

2019-06-19 10:43:30

如何选择最适合自己的代理IP池

在使用python爬虫的时候,经常会遇见所要爬取的网站采取了严格的反爬取机制。当高强度、高效率地爬取网页信息时,常常会给网站服务器带来巨大压力,所以同一个IP反

来源:黑核动态ip代理

2019-06-21 09:55:41

黑核混拨IP加速器让你知道如何改变ip地址

被论坛禁言了?玩游戏作弊,被封号了?被人屏蔽IP是件很让人不爽的事情,平时正忙的时候被封禁,会有种天塌下来的感觉。如何改变ip地址成了我们比做的事情,不改变IP

来源:黑核混拨ip加速器网

2018-12-25 16:58:44

什么是ip代理软件?可以修改ip地址吗?

经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们

来源:黑核混拨ip加速器网

2018-12-27 17:27:18

什么是python代理池?

代理IP大家都知道,今天说一下什么是代理池,以及python代理池。代理池是爬虫、采集、爆破、刷单等必不可少的配备。Python中高层次的数据结构,动态类型和动

来源:黑核混拨ip代理

2019-01-17 17:45:30

换ip软件帮您解决ip被封烦恼!

换ip软件帮您解决ip被封烦恼!我想做互联网工作的基本上都需要换下ip吧,很多时候我们做推广经常被封账号,特别是同一个IP自问自答马上封你没商量,但是这些推广也

来源:黑核混拨IP网

2018-12-25 15:52:02

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961