其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

python爬取高匿代理IP(再也不用担心会进小黑屋了)

GG网络技术分享 2025-03-18 16:14 1


大家好,这里是关于[搬瓦工更换IP教程(免费更换和付费更换)],[python爬取高匿代理IP(再也不用担心会进小黑屋了)]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!

搬瓦工更换IP教程(免费更换和付费更换)

2018年8月24日教程大全搬瓦工付费更换IP,搬瓦工免费更换IP,搬瓦工更换IP

搬瓦工一直以来都是付费更换IP,价格在不同时期也不一样,大概在2到29美元左右。这个价格相对板瓦工的VPS价格来说是比较高的。

因为最近一些时间国外IP墙的严重,搬瓦工也推出了免费更换IP的服务。

免费更换IP的要求是:

每10周可以免费更换一次,经常把VPS的IP玩的给墙掉的可以放心玩了。

下面开始免费更换IP教程:

打开官网:https://bwh81.net/

我们登陆被墙IP的VPS的KiwiVM面板,就是搬瓦工后台进入的面板。然后进入后我们打开下面这个网址:

https://kiwivm.64clouds.com/main-exec.php?mode=blacklistcheck

打开这个页面后,在这个网页检测IP是否被封,点击Test Main IP就开始检测了。

检测后如果显示:IP NOT BLOCKED就表示IP正常,就没必要换了。

如果是需要付费更换IP的话,看下面教程:

我们先检测IP是不是被墙了,怎么测?

打开站长工具,全国ping测试看看IP是不是国内全部超时(也有可能自己禁ping导致的超时)。如果国外节点也显示超时基本就是服务器原因了。多检查下服务器。单纯是国内超时的话基本就是被墙了。

另外一种情况,最近才出现的,IP测试ping正常,死活就是连不上服务器。这种的话就是TCP阻断了,也需要换IP才行。比直接墙还6.

下面是具体怎么更换的。

打开网址https://bwh81.net/ipchange.php

这个页面会有个介绍,介绍内容就是告诉你需要支付多少钱,然后他们分配前会在ping.pe检测IP是不是被墙,确认没有被墙才会给你,确保你的IP没有问题。并且不会影响到你的数据。

更换后用新IP去登陆服务器,域名解析也改到新IP上。

python爬取高匿代理IP(再也不用担心会进小黑屋了)


为什么要用代理IP

很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网站了,这个时候,就需要采用代理IP去做这些事情……

为什么要用高匿代理

我们可以对比不同类型的代理的区别,根据代理的匿名程度,代理可以分为如下类别:

  • 高度匿名代理:会将数据包原封不动的转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP则是代理服务器的IP。
  • 普通匿名代理:会在数据包上做一些改动,服务器上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。
  • 透明代理:不但改动了数据包,还会告诉服务器客户端的真实IP。
  • 间谍代理:指组织或个人创建的用户记录用户传输的数据,然后进行研究、监控等目的的代理服务器。

运行环境

Python运行环境:Windows + python3.6
用到的模块:requests、bs4、json
如未安装的模块,请使用pip instatll xxxxxx进行安装,例如:pip install requests

爬取西刺代理IP



这里,我只大概爬取西刺高匿代理50页的数据,当然了,爬100页,爬全部,都是可以的,就不多说了;

def run(self):

"""执行入口"""

page_list = range(1, 51)

with open("ip.json", "w") as write_file:

for page in page_list:

# 分页爬取数据

print('开始爬取第' + str(page) + '页IP数据')

ip_url = self.base_url + str(page)

html = self.get_url_html(ip_url)

soup = BeautifulSoup(html, 'html.parser')

# IP列表

ip_list = soup.select('#ip_list .odd')

for ip_tr in ip_list:

# 单条Ip信息

td_list = ip_tr.select('td')

ip_address = td_list[1].get_text()

ip_port = td_list[2].get_text()

ip_type = td_list[5].get_text()

info = {'ip': ip_address, 'port': ip_port, 'type': ip_type}

# 先校验一下IP的有效性再存储

check_res = self.check_ip(info)

if check_res:

print('IP有效:', info)

self.json_data.append(info)

else:

print('IP无效:', info)

json.dump(self.json_data, write_file)

复制代码

检测代理IP是否有效

爬取到的代理IP可能不能用,为了方便使用的时候,不报太多异常错误,所以需要先检测一下IP是否能正常使用,是否是有效代理IP,我这里列了三个网站,都可以很方便的检测IP地址是否能有效使用

  • icanhazip.com/ 这个网站能直接返回代理的IP地址
  • www.ip.cn/ 查询到代理的IP地址和位置信息
  • ip.chinaz.com/ 站长工具也能定位到IP地址和位置信息

def check_ip(self, ip_info):

"""测试IP地址是否有效"""

ip_url = ip_info['ip'] + ':' + str(ip_info['port'])

proxies = {'http': 'http://' + ip_url, 'https': 'https://' + ip_url}

res = False

try:

request = requests.get(url=self.check_url, headers=self.header, proxies=proxies, timeout=3)

if request.status_code == 200:

res = True

except Exception as error_info:

res = False

return res

复制代码

存储代理IP



我这里就不搞那些花里胡哨的,我直接把所有有效的代理IP的json格式的数据存储到文件中,当然了,也可以存储到MongoDB或者MySQL数据库中,不管怎样存储,在使用的时候都是随机选取一个IP,更加方便快捷。

完整代码

代码我已经上传了GitHub(GitHub源码地址),但是呢,作为一个热心的搬瓦工,为了方便部分人想偷懒,不直接去交友网站查看,我在这里也贴一下源码出来吧,如果有啥问题,最好还是去交友网站找我,请接码……

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

利用requests+bs4爬取国内高匿代理IP

author: gxcuizy

date: 2020-06-19

"""

import requests

from bs4 import BeautifulSoup

import json

class GetIpData(object):

"""爬取50页国内高匿代理IP"""

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}

base_url = 'https://www.xicidaili.com/nn/'

check_url = 'https://www.ip.cn/'

json_data = []

def get_url_html(self, url):

"""请求页面html"""

request = requests.get(url=url, headers=self.header, timeout=5)

html = False

if request.status_code == 200:

html = request.content

return html

def check_ip(self, ip_info):

"""测试IP地址是否有效"""

ip_url = ip_info['ip'] + ':' + str(ip_info['port'])

proxies = {'http': 'http://' + ip_url, 'https': 'https://' + ip_url}

res = False

try:

request = requests.get(url=self.check_url, headers=self.header, proxies=proxies, timeout=3)

if request.status_code == 200:

res = True

except Exception as error_info:

res = False

return res

def run(self):

"""执行入口"""

page_list = range(1, 51)

with open("ip.json", "w") as write_file:

for page in page_list:

# 分页爬取数据

print('开始爬取第' + str(page) + '页IP数据')

ip_url = self.base_url + str(page)

html = self.get_url_html(ip_url)

soup = BeautifulSoup(html, 'html.parser')

# IP列表

ip_list = soup.select('#ip_list .odd')

for ip_tr in ip_list:

# 单条Ip信息

td_list = ip_tr.select('td')

ip_address = td_list[1].get_text()

ip_port = td_list[2].get_text()

ip_type = td_list[5].get_text()

info = {'ip': ip_address, 'port': ip_port, 'type': ip_type}

# 先校验一下IP的有效性再存储

check_res = self.check_ip(info)

if check_res:

print('IP有效:', info)

self.json_data.append(info)

else:

print('IP无效:', info)

json.dump(self.json_data, write_file)

# 程序主入口

if __name__ == '__main__':

# 实例化

ip = GetIpData()

# 执行脚本

ip.run()

复制代码


最后,小编想说:我是一名python开发工程师,

整理了一套最新的python系统学习教程,

想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

标签:

提交需求或反馈

Demand feedback