代理设置--一些库的代理设置
首先最好能获取一个免费代理,来继续下面的阅读和实验
也可以在本机设置代理,具体流程由于比较敏感,请自行搜索
代理设置成功后的测试网站是 http://www.httpbin.org/get , 访问该链接可以得到请求相关的信息,返回结果中的 origin 字段就是客户端的 IP , 我们可以根据它判断代理是否设置成功
urllib 的代理设置
from urllib.error import URLError from urllib.request import ProxyHandler, build_openerproxy = '218.87.205.240:22927' proxy_handles = ProxyHandler({'http': 'http://' + proxy,'https': 'https://' + proxy })opener = build_opener(proxy_handles) try:response = opener.open('https://www.httpbin.org/get')print(response.read().decode('utf-8')) except URLError as e:print(e.reason)
这里需要借助 ProxyHandler 对象设置代理, 参数是字典类型的数据,键名是协议类型, 键值是代理地址(注意,此处的代理地址前面需要地址前面加上协议, 即 http:// 或者 https://), 当请求的链接使用的是 HTTPS 协议时, 使用 http 对应的代理地址, 当请求链接使用的是 HTTPS 协议时, 使用 https 键名对应的地址。
创建完 ProxyHandler 对象之后, 调用 build_opener 方法传入该对象, 创建一个 Opener 对象,赋值为 opener 变量, 相当于此对象已经设置好了代理,。直接调用 opener 的 open 方法就可以访问该链接了
如果代理需要认证的话,只需要修改 proxy 变量就可以了
proxy = 'username:password@218.87.205.240:22927'
如果是 SOCKS 类型,那么可以这样设置
import socks import socket from urllib.error import URLError from urllib import requestsocks.set_default_proxy(socks.SOCKS5, '218.87.205.240', 22927) socket.socket = socks.socksocket try:response = request.urlopen('https://www.httpbin.org/get')print(response.read().decode('utf-8')) except URLError as e:print(e.reason)
这里需要导入一个 socks 模块, 安装命令: pip install PySocks
requests 代理设置
import requestsproxy = '218.87.205.240:22927' proxies = {'http': 'http://' + proxy,'https': 'https://' + proxy } try:response = requests.get('https://www.httpbin.org/get', proxies=proxies)print(response.text) except requests.exceptions.ConnectionError as e:print(e.args)
如果需要认证
proxy = 'username:password@218.87.205.240:22927'
如果代理类型是 SOCKS
import requestsproxy = '218.87.205.240:22927' proxies = {'http': 'socks5://' + proxy,'https': 'socks5://' + proxy } try:response = requests.get('https://www.httpbin.org/get', proxies=proxies)print(response.text) except requests.exceptions.ConnectionError as e:print(e.args)
另外还有一种设置 SOCKS 代理的方法, 即使用 socks 模块,需要安装 socks 库
import requests import socks import socketsocks.set_default_proxy(socks.SOCKS5, '218.87.205.240', 22927) socket.socket = socks.socksocket try:response = requests.get('https://www.httpbin.org/get', proxies=proxies)print(response.text) except requests.exceptions.ConnectionError as e:print(e.args)
和上面的效果是一样的
httpx 的代理设置
import httpxproxy = '218.87.205.240:22927' proxies = {'http://': 'socks5://' + proxy,'https://': 'socks5://' + proxy } try:with httpx.Client(proxies=proxies) as client:response = client.get('https://www.httpbin.org/get')print(response.text) except:print('Error')
如果报错说,少库, 就按照提示, 手动安装一下
如果需要认证
proxy = 'username:password@218.87.205.240:22927'
对于 SOCKS 代理, 需要安装 httpx-socks[asyncio] 库 pip install httpx-socks[asyncio]
同步模式
import httpx from httpx_socks import SyncProxyTransporttransport = SyncProxyTransport.from_url('socks5://218.87.205.240:22927')with httpx.Client(transport=transport) as client:response = client.get('https://www.httpbin.org/get')print(response.text)
异步模式
import httpx import asyncio from httpx_socks import AsyncProxyTransporttransport = AsyncProxyTransport.from_url('socks5://218.87.205.240:22927')async def main():async with httpx.AsyncClient(transport=transport) as client:response = await client.get('https://www.httpbin.org/get')print(response.text)if __name__ == '__main__':asyncio.run(main())
Selenium 代理设置
from selenium import webdriverproxy = '218.87.205.240:22927' options = webdriver.ChromeOptions() options.add_argument('--proxy-server=http://' + proxy) browser = webdriver.Chrome(options=options) browser.get('https://www.httpbin.org/get') print(browser.page_source) browser.close()
如果需要认证
from selenium import webdriver from selenium.webdriver.chrome.options import Options import zipfileip = '127.0.0.1' port = 7890 username = 'foo' password = 'bar'manifest_json = """{"version":"1.0.0","manifest_version": 2,"name":"Chrome Proxy","permissions": ["proxy","tabs","unlimitedStorage","storage","<all_urls>","webRequest","webRequestBlocking"],"background": {"scripts": ["background.js"]} } """ background_js = """ var config = {mode: "fixed_servers",rules: {singleProxy: {scheme: "http",host: "%(ip) s",port: %(port) s}}}chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});function callbackFn(details) {return {authCredentials: {username: "%(username) s",password: "%(password) s"}} }chrome.webRequest.onAuthRequired.addListener(callbackFn,{urls: ["<all_urls>"]},['blocking'] ) """ % {'ip': ip, 'port': port, 'username': username, 'password': password}plugin_file = 'proxy_auth_plugin.zip' with zipfile.ZipFile(plugin_file, 'w') as zp:zp.writestr("manifest.json", manifest_json)zp.writestr("background.js", background_js) options = Options() options.add_argument("--start-maximized") options.add_extension(plugin_file) browser = webdriver.Chrome(options=options) browser.get('https://httpbin.org/get') print(browser.page_source) browser.close()
这里在本地创建了一个 manifest.json 配置文件 和 backgound.js 脚本来设置认证代理,运行代码后, 本地会生成一个 proxy_auth_plugin.zip 文件来保存当前配置
SOCKS 代理设置
from selenium import webdriverproxy = '127.0.0.1:7891' options = webdriver.ChromeOptions() options.add_argument('--proxy-server=socks5://' + proxy) browser = webdriver.Chrome(options=options) browser.get('https://httpbin.org/get') print(browser.page_source) browser.close()
aiohttp 的代理设置
import asyncio import aiohttpproxy = 'http://127.0.0.1:7890'async def main():async with aiohttp.ClientSession() as session:async with session.get('https://httpbin.org/get', proxy=proxy) as response:print(await response.text())if __name__ == '__main__':asyncio.get_event_loop().run_until_complete(main())
如果需要认证:
proxy = 'http://username:password@http://127.0.0.1:7890'
SOCKS 代理设置, 需要安装一个支持库 pip install aiohttp-socks
import asyncio import aiohttp from aiohttp_socks import ProxyConnector, ProxyType# connector = ProxyConnector.from_url('socks5://127.0.0.1:7891')connector = ProxyConnector(proxy_type=ProxyType.HTTP,host='127.0.0.1',port=7890,# username='user',# password='password',# rdns=True )async def main():async with aiohttp.ClientSession(connector=connector) as session:async with session.get('https://httpbin.org/get') as response:print(await response.text())if __name__ == '__main__':asyncio.get_event_loop().run_until_complete(main())
Pyppeteer 的代理设置
对于 pyppeteer ,默认的是 Chrome 的 Chromium 浏览器
import asyncio from pyppeteer import launchproxy = '127.0.0.1:7890'async def main():browser = await launch({'args': ['--proxy-server=http://' + proxy], 'headless': False})page = await browser.newPage()await page.goto('https://httpbin.org/get')print(await page.content())await browser.close()if __name__ == '__main__':asyncio.get_event_loop().run_until_complete(main())
SOCKS 代理设置
import asyncio from pyppeteer import launchproxy = '127.0.0.1:7891'async def main():browser = await launch({'args': ['--proxy-server=socks5://' + proxy], 'headless': False})page = await browser.newPage()await page.goto('https://httpbin.org/get')print(await page.content())await browser.close()if __name__ == '__main__':asyncio.get_event_loop().run_until_complete(main())
PlayWright 的代理设置
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False, proxy={'server': 'http://127.0.0.1:7890'})page = browser.new_page()page.goto('https://httpbin.org/get')print(page.content())browser.close()
在调用 launch 方法的时候, 可以传入 proxy 参数, 它是一个字典, 其中有一个必填的字段叫作 server 这里我们直接填入 HTTP 代理的地址即可
需要认证的时候
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(proxy={'server': 'http://127.0.0.1:7890','username': 'foo','password': 'bar'})page = browser.new_page()page.goto('https://httpbin.org/get')print(page.content())browser.close()
SOCKS 代理
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(proxy={'server': 'socks5://127.0.0.1:7891'})page = browser.new_page()page.goto('https://httpbin.org/get')print(page.content())browser.close()
相关文章:
代理设置--一些库的代理设置
首先最好能获取一个免费代理,来继续下面的阅读和实验 也可以在本机设置代理,具体流程由于比较敏感,请自行搜索 代理设置成功后的测试网站是 http://www.httpbin.org/get , 访问该链接可以得到请求相关的信息,返回结果中的 ori…...
Debezium系列之:PostgreSQL数据库赋予账号数据采集权限的详细步骤
Debezium系列之:PostgreSQL数据库赋予账号数据采集权限的详细步骤 一、账号需要的权限二、创建账号,赋予登陆、复制权限三、赋予账号数据库权限四、赋予账号对表的权限五、创建PostgreSQL数据库复制组六、账号权限授予完整案例七、扩展——分区表设置八、扩展-撤销账号的权限…...
javascript:判断输入值是数字还是字母
1 代码示例 要判断输入值是数字还是字母,我们可以通过JavaScript获取输入框的值,然后使用isNaN函数来检查输入值是否为数字。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><s…...
Java-排序算法-复盘知识点
刷了24道简单排序题,18道中等排序题之后,给排序算法来个简单的复盘(从明天开始刷动态规划咯) 1.对于找多数元素(出现次数超过一半的元素)可以使用摩尔投票法。 2.HashSet的add方法非常实用:如…...
HarmonyOS 原生智能之语音识别实战
HarmonyOS 原生智能之语音识别实战 背景 公司很多业务场景使用到了语音识别功能,当时我们的语音团队自研了语音识别模型,方案是云端模型加端侧SDK交互,端侧负责做语音采集、VAD、opus编码,实时传输给云端,云端识别后…...
基于Gromacs的蛋白质与小分子配体相互作用模拟教程
在生命科学的广阔领域中,蛋白质与小分子配体之间的相互作用扮演着至关重要的角色。这些相互作用不仅影响着生物体内的各种生命活动,如信号传导、代谢调控和药物作用等,同时也是药物设计和开发的核心内容。因此,深入理解并模拟这些…...
Ubuntu下python3.12安装, 分布式 LLM 推理 exo 安装调试过程, 运行自己的 AI 集群
创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” —调试有点废,文章有点长,希望大家用心看完,肯定能学废,感谢. 1. Ubuntu下python3.12安装 1.1 导入 Python 的稳定版 PPA,不用编译 sudo add-apt-repository ppa:deadsnakes/ppa sudo…...
pytest-bdd 行为驱动自动化测试
引言 pytest-bdd 是一个专为Python设计的行为驱动开发(BDD)测试框架,它允许开发人员使用自然语言(如Gherkin)来编写测试用例,从而使测试用例更易于理解和维护。 安装 通过pip安装 pip install pytest-b…...
PostgreSQL11 | 触发器
本文章代码已在pgsql11.22版本上运行且通过,展示页由pgAdmin8.4版本提供 上一篇总结了原著的第十章有关pgsql的视图的用法,本篇将总结pgsql的触发器的用法。 触发器 使用触发器可以自动化完成一些在插入数据或修改数据时,某些需要同期同步的…...
cesium canvas广告牌
在有些业务中,对场景中的广告牌样式要求比较高,需要动态显示一些数据,这个时候,我们可以通过将复杂背景样式制作成图片,通过canvas绘制图片和动态数据,从而达到比较好的显示效果。 1 CanvasMarker 类封装 …...
使用Floyd算法求解两点间最短距离
Floyd算法 Floyd算法又称为Floyd-Warshell算法,其实Warshell算法是离散数学中求传递闭包的算法,两者的思想是一致的。Floyd算法是求解多源最短路时通常选用的算法,经过一次算法即可求出任意两点之间的最短距离,并且可以处理有负权…...
linux“how_paras.sh“ E212: 无法打开并写入文件
经过一番测试和查找, [6localhost bin]$ find / -name "hello.sh" 2>/dev/null /home/6/bin/hello.sh [6localhost bin]$ ls hello.sh ls: 无法访问hello.sh: 没有那个文件或目录,为什么在/bin文件下却不能打开, [6localhost …...
CSS mask-image 实现边缘淡出过渡效果
使用场景 在生产环境中,遇到一个需求,需要在一个深色风格的大屏页面中,嵌入 Google Maps。为了减少违和感,希望地图四边能够淡出过渡。 这里的“淡出过渡”,关键是淡出,而非降低透明度。 基于 Google Ma…...
电子元器件—电容和电感(一篇文章搞懂电路中的电容和电感)(笔记)(面试考试必备知识点)电容和电感作用、用途、使用、注意事项、特点等(面试必备)-笔记(详解)
作者:Whappy 座右铭:不曾拥有,何来失去! 时间:2024年8月2日08:40:04 一、电容的作用 储能: 电容器通过充电储存电荷在电容板上,形成电场储存电能。当需要释放储存的电能时,电荷…...
2024HDU Contest 5 Problem 5
题目链接 从大到小枚举gcd的值 d d d,以及编号为 d d d的倍数的点, [ d , 2 d , 3 d , … ] [d,2d,3d,\dots] [d,2d,3d,…]。 然后对于任何一条边 ( x , y ) (x,y) (x,y),如果 x x x的子树和 y y y的子树里都有编号为 d d d倍数的点…...
nGQL入门
引言 nGQL(NebulaGraph Query Language)是用于操作 NebulaGraph 的查询语言。它的语法类似于 Cypher,但有自己独特的特性。以下是一些 nGQL 的基本语法和操作示例,以帮助你入门。 基本概念 节点(Vertex)…...
[CP_AUTOSAR]_系统服务_DEM模块(二)功能规范介绍
目录 1、DEM 功能规范描述1.1、Startup behavior1.2、Monitor re-initialization 在前面 《[CP_AUTOSAR]_系统服务_DEM模块(一)》文中,简要介绍了 DEM 模块的功能、与其它模块之间的功能交互,本文将接着介绍 DEM 模块的功能规范。…...
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
文章目录 一、常见Linux发行版本二、Linux中yum、rpm、apt-get、wget的区别2.1 yum2.2 rpm2.3 apt-get2.4 wget2.5 总结 三、CentOS中yum的作用3.1 yum清空缓存列表3.2 yum显示信息3.3 yum搜索、查看3.4 yum安装3.5 yum删除、卸载程序3.6 yum包的升级、降级 四、Ubuntu中apt-ge…...
IPython的使用技巧2
关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的…...
win10打开程序闪退的解决方法,亲测好用
当我们在使用win10系统的时候,可能会遇到安装某些程序后无法正常使用,一打开就闪退,或者点击右下角图标就消失了,而其他程序却可以正常打开使用。下面小编就来和大家分享亲测好用的win10打开程序闪退的解决办法。 问题原因分析&a…...
木舟0基础学习Java的第二十一天(数据库,MySQL,SQLyog)
数据库 数据库:按照数据结构来组织 存储数据的厂库 数据管理系统(Database Management System,DBMS):一套操作和管理数据库的软件 用于简历 使用 维护数据库 关系型数据库:采用关系模型作为数据组织方式 逻辑结构是一张二维表 由行和列组成…...
python-鼠标绘画线条程序
闲来无聊简单编写了一个绘图小程序。 主要思路 主要是基于Python中的内置模块turtle编写的,简单扩展了一下,通过绑定事件能够达到鼠标绘制、删除、存储已经绘制图案的线条这几个功能。 路径结构 -draw- define.py- main.py- myturtle.py使用 点住鼠…...
【Python实战】如何优雅地实现 PDF 去水印?
话接上篇,自动化处理 PDF 文档,完美实现 WPS 会员功能 小伙伴们更关心的是如何去除 PDF 中的水印~ 今天,就来分享一个超简单的 PDF 去水印方法~ 1. 原理介绍 在上一篇中,我们介绍了如何将 PDF 文档转换成图片,图片…...
Keysight(原Agilent) E4980AL 精密 LCR 表特性与技术指标
Keysight(原Agilent) E4980AL 精密 LCR 表为基础 LCR 表树立了行业标准,可在多个频率范围内提供更佳的精度、速度和通用性。E4980AL 结合了种类繁多的附件,适用于一般研发和生产环境中的各种元件和材料测量。也可通过频率升级而提升投资回报率。 Keysig…...
【运维】Redis主从复制 配置
【运维】Redis主从复制 配置 主库配置Master # 默认情况下,是 启用保护模式的,其他主机的客户端无法连接到 Redis 。当想要其他主机的客户端连接到 Redis 时,需要修改为 no 。protected-mode no 从库配置Slave # replicaof [master主机ip] …...
C++ 微积分 - 求导 - 自动微分(Automatic Differentiation)
C 微积分 - 求导 - 自动微分(Automatic Differentiation) flyfish 自动微分(Automatic Differentiation,简称 AD)是一种用于精确计算函数导数的技术。它结合了符号微分的准确性和数值微分的效率。自动微分的核心思想…...
面试题-每日5道
26.在 Queue 中 poll()和 remove()有什么区别? 相同点:都是删除第一个元素并返回。 不同点:如果没有元素poll()会返回null,而remove()会抛出NoSuchElementException异常 27.哪些集合类是线程安全的? Vector,Stock,Hashtable都是线程安全的&a…...
STM32卡死、跑飞如何调试确定问题
目录 前言 一、程序跑飞原因 二、调试工具 2.1Registers工具 2.2 Memory工具 2.3 Disassembly工具 2.4 Call Stack工具 三、找到程序跑飞位置 方式一、 方式二、 前言 我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行&#…...
代理模式和Spring MVC
Spring是一个分层的轻量级的开源Java框架。核心是IOC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程) AOP 面向切面 AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想&#x…...
深入理解Vue slot的原理
文章目录 前言为什么需要插槽作用域插槽插槽的原理总结 前言 插槽是Vue中一个重要的特性,它有很多种用法:默认插槽、具名插槽、作用域插槽。尤其作用域插槽,还有一堆特性,比如解构prop,解构prop的时候还可以进行属性名…...
网页制作免费网站建设/管理培训
疑问:之前一直以为hashcode就是计算对象的内存地址,但是看其它博文又有说不是的,特此研究一下! 先说结论:在JDK1.8中,hashcode和对象的内存地址没有必然关系,不是hashcode相等,他们…...
横琴高新区最新/长沙seo外包优化
将图片转换成HTML格式的文字图程序源代码■ 将图片转换成HTML格式的文字图————————————————以下为程序代码—————————————using System;using System.Drawing;using System.Text;namespace http://doc.wendoc.com.ClassLib{/// /// 将图片转换为Ht…...
怎么自己做网站教程/网络营销软文范例500
1、要使用Dictionary集合,需要导入C#泛型命名空间System.Collections.Generic(程序集:mscorlib) 2、描述1)、从一组键(Key)到一组值(Value)的映射,每一个添加…...
域名网站账号/今日国内新闻最新消息大事
前两天项目要求一个附加功能,远程监视服务器的运行状况,要定期监视指定端口,指定业务,还包括服务器的磁盘空间,内存,CPU使用率等等。这头俩事还好说,ping和telnet也就搞定了,实在不行…...
手机网站制作哪家公司好/目前好的推广平台
康拓展开: 求出当前排列是全排列中的第几个 Xa[n]*(n-1)!a[n-1]*(n-2)!...a[i]*(i-1)!...a[1]*0! 其中a[i]是当前位置后面有多少个比当前位置大的数, 可以看成是求当前位置的逆序。 int cantor(int n, int num[]){int c 0;int cnt 0;for(int i 0; i …...
海淀商城网站建设/百度热搜seo
mysql在linux下的my.cnf文件在哪里!用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,第一种说法,my.cnf只是MySQL启动时的一个参数文件,…...