动态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重复率

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

2018-12-28 17:34:12

为什么会诞生代理ip软件的 免费与收费代理ip软件区别

现在做网站最头痛的就是有人采集自己的网站,所以很多做网站的都会做防采集措施,或者封掉大量采集页面的ip,那么封掉ip这个对于采集的人来说就很痛苦了,直接不能访问

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

2019-01-07 13:36:28

免费代理ip软件与收费代理ip软件的差距在哪里

对于很大一部分人来说,人们都是希望能够免费包括衣食住行,也包括工作中所使用的某些工具,就比如代理代理ip软件。在网络上,这类代理ip软件是十分之多,绝大多数都是

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

2019-01-07 17:10:21

为什么不建议分布式爬虫使用免费的代理ip

互联网中,IP的作用至关重要。IP地址是指互联网协议地址,简单的说就是互联网分配给网络设备的门牌号,为了网络中的计算机能够互相访问,并且知道对方是谁。很多时候当

来源:黑核混拨ip代理

2019-01-14 16:35:44

HTTP代理IP有什么用?免费和收费的HTTP代理IP有什么区别

HTTP代理IP可以帮助我们做很多事当我们上网的时候,也许会遇到IP不够用的窘境。例如在某些网站,当我们需要注册多个账号时,如果始终使用一个IP,往往会提示该I

来源:黑核混拨ip代理

2019-01-16 16:32:14

手机免费更换IP的软件

黑核混拨IP代理,是一款优秀的手机免费更换IP的软件,只需要轻轻一按,自动切换,更换快,网不卡,全国IP想换就换!1、动态线路IP全国180城市地区,IP量保证

来源:黑核混拨ip代理

2019-03-28 15:00:56

使用免费HTTP代理IP有哪些不安全因素

我们为什么选择使用免费HTTP代理IP?最大原因在于没有成本,但你真的了解免费HTTP代理IP吗?以下跟随小编来了解看看使用免费HTTP代理IP有哪些不安全因素

来源:黑核动态ip代理

2019-04-04 15:39:09

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

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

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

2018-12-25 16:58:44

构建Python爬虫IP代理池服务的常见问题

在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在

来源:黑核动态ip代理

2019-05-21 10:13:38

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

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

来源:黑核混拨IP网

2018-12-25 15:52:02

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

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

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

2019-01-05 17:07:22

在线客服
讨论QQ群
客服电话
13318873961
微信客服