浏览器-网页通信

浏览器扩展+本地通信:让AI Agent复用登录态操控网页 浏览器扩展与本地通信是构建自动化工具的关键技术。其原理在于扩展运行于浏览器环境,可访问DOM与Cookie,通过WebSocket或HTTP与本地服务交换指令,实现登录态复用。技术价值在于避免重复登录与验证码,提升自动化稳定性。典型应用场景包括自动化测试、RPA及AI编程助手操作内部系统。本文分享的“油猴”方案,正是利用扩展与本地Agent通信,让Claude Code等命令行AI直接操控已登录浏览器,解决传统Playwright需重新登录的痛点。 阅读详情

跨域通信

同源策略是浏览器的安全策略。如果两个页面的协议、端口和主机都相同,则它们具有相同的源,非同源页面交互会受到限制

JSONP

只限于 get 请求。利用 script 标签(还有img、link、form)没有跨域限制的性质,通过 script 标签指向一个需要访问的地址并提供一个回调函数来接收数据

// 这里用promise封装jsonp函数
jsonp("http://localhost:3000/api/test", {
   
   
  params: {
   
   
    name: "JacksonZhou",
  },
  jsonp: "getName", // 回调函数
}).then((res) => {
   
   
  res = JSON.parse(res);
  let index = document.getElementById("index");
  index.innerHTML = res.desc;
});
function jsonp(url, options = {
    
    }) {
   
   
  let time = options.time || 5000;
  let paramStr = "";
  if (options.params && JSON.stringify(options.params) !== "{}") {
   
   
    Object.keys(options.params).forEach((key) => {
   
   
      paramStr += `&${
     
     key}=
Unity 导出WebGL 嵌入网页并通信 Unity打包WebGL 并实现双向通信逻辑 阅读详情

相关推荐

用ZFBrowser在Unity里做个浏览器应用:从网页加载到JavaScript双向通信的完整指南(2024版)

本文是2024年Unity内嵌浏览器开发的完整指南,详细介绍了如何使用ZFBrowser插件在UGUI中实现网页加载与渲染。核心内容包括项目环境搭建、与PointerUIGUI等组件的深度集成,并重点讲解了Unity与JavaScript之间实现高效双向通信的实战方法,助力开发者构建功能强大的混合应用。

brown的博客 217

基于webRTC的网页、android视频通信学习笔记(一)

公司有项目需要用到视频通信,本人自告奋勇(脑子一热)接下了这个重任。。经过几天的资料搜索,最终选定了使用WebRTC来做视频通信,关于这方面的资料现在国内还不是很多。。看英文看的头都大了,故记录一下学习过程,希望以后可以帮到别人。 首先了解一下什么是webRTC: http://segmentfault.com/blog/skyinlayer/1190000000436544  这篇文章讲

mhxy199288的专栏 2718

【网站架构】快速了解前端网页的工作原理。Html、Css、JavaScript是如何工作的?Dom操作是什么?

前几期文章讲了一些网站架构的宏观知识,包括业务架构、技术架构、部署架构等。从本期开始,会深入前端、后端、云计算部分,分享一下在实际项目当中,架构都需要考虑些什么问题。 这期主要介绍前端网页的工作原理 一般来说,安装好Nginx或者Apache, 接着把写好的网页文件放到指定目录 ,然后在浏览器中输入网址就可以打开网页了 。 简单介绍1 至于网页文件,只有三种Html、Css、JavaScript文件 简单的介绍2 Html文件一般是写网页标签的,也就是编写网页的骨架,Htm...

池鱼 - YiiGaa 2579

Unity Oculus VR应用集成GeckoView 3D网页浏览器开发指南

在移动应用开发中,嵌入式浏览器引擎是实现应用内网页内容展示的关键技术。其核心原理在于通过原生插件机制,将独立的浏览器渲染引擎(如GeckoView)集成到宿主应用中,实现网页内容的直接渲染与控制。这项技术的价值在于能够提供不依赖系统、版本可控且功能稳定的网页浏览能力,尤其适用于对性能和一致性要求苛刻的场景。在虚拟现实(VR)应用开发领域,将2D网页内容无缝整合到3D沉浸式环境中是一个重要需求,这需要解决跨平台通信、输入事件映射和3D渲染融合等一系列工程挑战。本文以Unity引擎和Oculus Quest V

weixin_29007243的博客 340

unity发布网页版(内嵌网页)

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

itaki的专栏 9621

通过WebRTC实现实时视频通信(一)

WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla基金会、Opera支持下被包括进万维网联盟的W3C推荐标准。

GBin1.com 3427

网页工作的原理

一般来说,安装好Nginx或者Apache, 接着把写好的网页文件放到指定目录 ,然后在浏览器中输入网址就可以打开网页了 。 至于网页文件,只有三种Html、Css、JavaScript文件 Html文件一般是写网页标签的,也就是编写网页的骨架,Html文件还可以指定其引用的Css、JavaScript文件 Css文件是设置样式的,就是大小、颜色、位置等 JavaScript文件一般是处理交互或与后端通信的 下面分两个部分深入介绍前端网页的工作原理 1、浏览器加载网页 2、浏览器运行网页 1、浏览器是如

yudi1523的博客 922

QT嵌入支持WEBRTC的网页

就可以开始进行QT上的带视频的网页相关开发了,下面的例子在QT界面插入网页,网页里调用了getUserMedia获取本地视频。本文主要讲在QT开发中,WEBRTC网页版通信的第一步,浏览器与媒体设备(即麦克风和摄像头)的交互的实现。先编译好支持音视频的QtWebEngine或QCefView的其中一个,编译过程可参考。MainWindow.cpp 下面代码直接给了权限,也可以根据实际情况给权限。即可在QT的界面上显示出本机视频设备的视频。即可在QT的界面上显示出本机视频设备的视频。

Chocolate的博客 1801

浏览器输入URL后发生了什么?

文章目录URL 解析DNS域名解析建立TCP连接发送HTTP请求处理并响应HTTP请求浏览器渲染页面关闭TCP连接 URL 解析 URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。 地址格式:scheme://host.domain:port/path/filename 各部分解释如下: scheme: 定义因特网服务的类型。常见的协议有 http、https、ftp、file,其中最常见的类型是 http,而 https 则是进行加密的网络传输

YuLong的博客 3690

ZKTeco live20R指纹采集识别适配谷歌浏览器

最近最近 最近手头的软件项目需要用到指纹采集器,于是上某宝淘了下,发现成熟的指纹采集模块厂家不多。找了一家销量最高的。价格也挺便宜的。 大多数都有桌面版和IE浏览器插件,但是都没有谷歌浏览器版本的。郁闷! 项目是基于谷歌浏览器做的,但是谷歌浏览器不支持activeX控件。网上也有可以让activeX控件适配谷歌浏览器的方法,但是都不保证可用。本着网上没有就自己造的原则,我开始了适配之旅。 曲线救国,既然浏览器端不行那就走客户端,我的思路是这样的: 1、在桌面搭建websocket服务端,.

微尘物联-联通无限 5432

基于Electron和Puppeteer实现AI网页内容自动读取

网页内容抓取是数据采集和自动化处理的基础技术,其核心原理是通过模拟浏览器行为获取DOM结构。传统方法受限于跨域策略和动态内容加载,而现代解决方案结合无头浏览器技术可突破这些限制。Electron作为跨平台桌面应用框架,配合Puppeteer的无头浏览器功能,能完整捕获包括JavaScript渲染后的页面内容。这种技术组合在AI数据处理领域尤为重要,特别是当需要将网页内容直接输入Claude等大语言模型时,可保持原始格式并实现端到端自动化。典型应用场景包括新闻摘要生成、技术文档解析和竞品内容监控,其中通过El

weixin_30402231的博客 270

Unity内嵌浏览器插件实战:从原理到应用打造沉浸式Web3D体验

在3D应用开发中,内嵌浏览器技术是实现混合内容展示的关键桥梁。其核心原理是通过桥接层将成熟的网页渲染引擎(如CEF或系统WebView)与3D引擎连接,将网页内容实时渲染为动态纹理并映射到3D物体表面。这项技术的价值在于打破了传统应用与Web生态的壁垒,允许开发者利用强大的前端技术栈(如数据可视化库、现代UI框架)来增强3D应用的交互与表现力。在应用场景上,它广泛适用于数字孪生、虚拟展厅、教育模拟和AR/VR等领域,能够高效实现实时数据看板、复杂UI界面和在线内容集成。本文以Unity引擎为例,深入解析如何

weixin_33164198的博客 360

Python爬虫进阶:基于CDP协议高效抓取动态网页数据

在Web数据采集领域,动态网页内容的抓取一直是技术难点。传统基于HTTP请求的爬虫难以应对由JavaScript渲染的单页应用(SPA),而无头浏览器方案又面临资源消耗大的挑战。CDP(Chrome DevTools Protocol)协议为解决这一问题提供了底层技术路径,它允许程序直接与浏览器内核通信,通过发送协议命令驱动页面渲染、执行脚本并监听网络活动。这种技术方案的核心价值在于实现了对动态内容的精准控制,同时保持了较高的执行效率。在Python生态中,开发者可以通过websockets库直接操作CDP

weixin_33552698的博客 325

AI Agent 进阶:如何让 Claude 直接读取浏览器网页内容?(从网页受挫到桌面版破局)

摘要:本文分享了如何让Claude AI直接读取浏览器网页内容的完整解决方案。作者发现网页版Claude无法访问外部网页后,转向桌面版应用,但遇到"Chrome未运行"报错。通过底层排查发现核心问题在于Chrome默认禁用了AppleScript的JavaScript执行权限。最终通过两步解决:1)在Chrome开发者选项中启用"允许Apple事件中的JavaScript";2)在macOS系统设置中授予Claude自动化权限。配置完成后,Claude可直接读取当前标

小丁的博客 1245

5步轻松搞定:C# WinForm应用中嵌入网页,CefSharp vs WebBrowser,你选谁?

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀嘿,小伙伴们!今天我们要聊聊一个让WinForm应用程序如虎添翼的小技巧——使用CefSharp嵌入网页内容。想象一下,如果你能在自己的桌面应用里直接展示现代Web页面,是不是会酷炫很多?没错,通过CefSharp这个强大的工具,我们真的可以做到这一点!那么问题来了:你更倾向于用传统的WebBrowser。

java专栏 1663

12.4.1 实现网页浏览

12.4 HTTP网络通信 前面介绍的QTcpSocket、QUdpSocket、QTcpServer都是网络传输层的类,属于底层的网络编程接口。如果需要进行Http通信,比如:浏览网页、请求网络数据、下载上传文件等操作时,就需要用到更高层次,更加强大的编程接口。 QT5版本中关于Http通信相关的类有QNetworkReply、QNetworkAccessManager、QNetworkRequest等。其中QNetworkReply类负责对网络请求进行响应;QNetworkRequest类负责向网络

289

14、数字通信与网络浏览全攻略

本文全面介绍了数字通信与网络浏览的实用技巧,涵盖邮件收发、新闻组使用、传真操作及网页创建等内容。详细讲解了KMail、Netscape Messenger等邮件工具的使用方法,KNode和Netscape访问Usenet新闻组的操作步骤,KDE下的传真程序K Send a Fax与KFax的功能区别,Konqueror浏览器的基本与高级使用技巧,并系统梳理了使用Quanta Plus创建网页的完整流程。同时提供了相关术语解释和工具对比表格,帮助用户根据需求选择合适的工具,提升在数字环境中的沟通与信息处理效率

delta的博客 45

微波无源器件 功分器1 新型方波导双模无功功分器

本名证明了一种基于有着特定功能的(dedicated)T性匹配元件(散射件)的进化结点的新型波导双模两路功分器的可行性。这个散射件,有着面向三个部分的匹配部分,提供了等效功分并且朝着对应的输出端口传输矩形波导的两个TE10/TE01正交模式。所提出的设计紧凑,易于比例变化并且能够级联来获得。

qq_45245770的博客 1393

GR00TN1.7国内本地下载+模型下在+hugingface无法连接,本地模型下载

GR00TN1.7

alsj123456的博客 99

告别黑盒:深入解析西部数据UFS芯片的44个SMART健康参数(附高通XBL读取源码)

本文深入解析西部数据UFS芯片的44个SMART健康参数,结合高通XBL启动加载层源码,提供了一套完整的健康状态诊断方法论。从SCSI命令层封装到数据结构映射,详细介绍了如何在高通平台早期启动阶段捕获UFS健康状态,帮助工程师实现预测性维护。

weixin_30600197的博客 427

R语言实战:三因素方差分析(ANOVA)从入门到精通(附完整代码解析)

本文详细介绍了如何使用R语言进行三因素方差分析(ANOVA),从数据准备、模型构建到结果解读与可视化,提供完整代码解析。通过实战案例,帮助读者掌握复杂交互效应的分析方法,适用于科研、教育等多个领域的数据分析需求。

weixin_29081101的博客 244

開機自動進入UEFI Interactive Shell無法正常開機怎麼辦?

BIOS/UEFI,啟動後進入UEFI Interactive Shell大多數人都告訴你沒有安裝系統去裝系統吧,但你明明昨天還在運行系統?今天就這樣?有沒有解決辦法?

sheaahhoi1的博客 7745

【Java核心高阶进阶】44-Java8核心新特性

模块十:Java新特性演进 · 第 1 篇Java 8 是 Java 语言历史上最重要的一次发布,它引入的函数式编程范式从根本上改变了 Java 的编码方式。即便到了 JDK 21 的今天,Lambda、Stream、Optional 仍是日常开发的高频工具。本篇将深入这些特性的语法、原理与底层机制,帮助你不仅会用,更知其所以然。

gaochufukanyongren的博客 24

第一章:GEE 和 GEEMAP

在本章中,我们将介绍地理空间数据科学、谷歌地球引擎和地理地图的基础知识。然后,我们将逐步完成设置 conda 环境和安装 geemap 的步骤。我们还将学习如何在不在您的计算机上安装任何东西的情况下将 geemap 与 Google Colab 一起使用。...

韩天放 8050

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1093

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 浏览器-http缓存和本地存储
下一篇: 网络-http概述
__lucas
博客等级 码龄9年 329粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值