pythonrequests代理ip_python使用requests模块使用ip代理池

pythonrequests代理ip_python使用requests模块使用ip代理池importjsonimporttelnetlibimportrequestsimportrandom#代理ip列表proxy_url=”https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list”#写入可用ip代理池文件路径ip_pool_file=”verified_proxies.json”#用…

大家好,又见面了,我是你们的朋友全栈君。

import json

import telnetlib

import requests

import random

# 代理ip列表

proxy_url = “https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list”

# 写入可用ip代理池文件路径

ip_pool_file = “verified_proxies.json”

# 用于测试代理ip是否可用的网站

test_url = “http://icanhazip.com/”

# user-agent头

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/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)”,

“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”,

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

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

“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/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 (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”,

]

# 从ip网站上爬取所有代理ip

def get_proxy(proxy_url):

response = requests.get(proxy_url)

proxy_list = response.text.split(“\n”)

for proxy_str in proxy_list:

proxy_json = json.loads(proxy_str)

host = proxy_json[“host”]

port = proxy_json[“port”]

ip_type = proxy_json[“type”]

check_and_save_ip(host, port, ip_type)

# 测试ip是否可用,可用的话存入文件

def check_and_save_ip(ip, port, ip_type):

proxies = {}

try:

# 测试是否能使用

telnet = telnetlib.Telnet(ip, port=port, timeout=3)

except Exception:

print(‘unconnected’)

else:

print(‘connected successfully’)

proxies[‘type’] = ip_type

proxies[‘host’] = ip

proxies[‘port’] = port

proxies_json = json.dumps(proxies)

with open(ip_pool_file, ‘a+’) as fp:

fp.write(proxies_json + ‘\n’)

print(“已写入:%s” % proxies)

# 随机获取一个UA头

def get_request_headers():

headers = {

‘User-Agent’: random.choice(USER_AGENTS),

‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’,

‘Accept-Language’: ‘en-US,en;q=0.5’,

‘Connection’: ‘keep-alive’,

}

return headers

# 这里只是测试

def use_proxy():

proxies = []

with open(ip_pool_file, “r”) as fp:

while True:

item = fp.readline()

if item:

# print(type(json.loads(item)))

proxies.append(json.loads(item))

else:

break

# print(type(proxies[1]))

for item in proxies:

ip = item[‘host’]

port = item[‘port’]

# print(ip, port)

proxies_param = {

‘http’: ‘%s:%s’%(ip, port)

}

print(proxies_param)

try:

# 发送请求,获取响应数据

response = requests.get(test_url, headers=get_request_headers(), proxies=proxies_param, timeout=5)

if response.ok:

# 把响应的json字符串转换为字典

# dic = json.loads(response.text)

# print(dic[‘origin’])

print(response.content)

except Exception as ex:

print(ex)

if __name__ == “__main__”:

# get_proxy(proxy_url)

use_proxy()

# res = requests.get(‘http://icanhazip.com/’, proxies={‘http’: ‘167.99.145.189:3128’})

# print(res.content)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141029.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 单片机控制步进电机正反转c语言程序,单片机控制步进电机1步10步100步正反转…

    单片机控制步进电机正反转c语言程序,单片机控制步进电机1步10步100步正反转…原标题:单片机控制步进电机1步10步100步正反转一,程序设计方案的构想:1)的控制原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响.即给电机加一个信号,电机则转过一个步距角.这一线形关系的存在,加上步进电机只有周期性的误差而无积累误差等特点,使得在线速度,位置等控制领域用步进电机来控制变的…

    2022年5月8日
    95
  • Spring Boot整合RabbitMQ详细教程

    Spring Boot整合RabbitMQ详细教程1.首先我们简单了解一下消息中间件的应用场景异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西.(2)并行方式:将注册信…

    2022年5月14日
    41
  • idea2012.2 激活码-激活码分享

    (idea2012.2 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~D…

    2022年3月26日
    106
  • 2018阿里笔试题一道

    2018阿里笔试题一道八卦阵相传是由诸葛亮创设的一种战斗队形和兵力部署,由八种阵势组成。为了方便,采用矩阵来描述一个八卦阵,它由八个单阵组成,每个单阵由多个兵力区域组成形成一种阵势,如下图所示,其中数字为一个兵力区域的士兵个数。假设单阵与单阵之间兵力区域不会相邻,且单阵中每个兵力区域至少存在一个相邻兵力区域(注:相邻是指在其左上,正上,右上,右方,右下,正下,左下,左方与其相邻),请用最快的速度计算出八个单阵中的兵力(…

    2022年5月23日
    44
  • 60mph和kmh换算_mph换算器(速度计算器在线)「建议收藏」

    60mph和kmh换算_mph换算器(速度计算器在线)「建议收藏」mph是英里每时的意思吗?如何换算成千米每时?100mph=160.9kmhmph是英里每时的意思吗?如何换算成千米每时?mph是米/小时的意思mitersperhour也可写成m/hAkm/h=A*1000m/h玩极品飞车12,上面的速度是mph,怎么换算啊1英里=5280英尺=63360英寸=1609.344米汽车速度表上,英制的MPH与公制的km/…

    2022年6月28日
    85
  • python+pycharm安装_pycharm详细安装教程

    python+pycharm安装_pycharm详细安装教程(图解)首先我们来安装python1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。2、下载完成后如下图所示3、双击exe文件进行安装,如下图,并按照圈中区域进行设置,切记要勾选打钩的框,然后再点击Customizeinstallation进入到下一步:4、对于上图中,可以通过Browse进行自定义安装路径,也可以直接点击Install

    2022年8月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号