vnstock-js

vnstock-js

Tài LiệuDùng Với AIVí DụBài ViếtDemo
k

© Copyright 2026

Giới Thiệu
Cài Đặt
Hướng Dẫn Sử Dụng Nhanh
Quy Ước & Đơn Vịv2.0
Dùng Với AIv2.0
Kiến Trúc
Danh Sách Hàm
Nâng Cấp Từ v1v2.0
CLI
Lịch Sử Phiên Bản
Câu Hỏi Thường Gặp
Cơ Bản
Bảng Giá - Prices
Lịch Sử Giá - History
Danh Mục Mã - Symbols
Tìm Kiếm - Search
Tài Chính - Financials
Thị Trường - Marketv1.5
Sàng Lọc - Screening
Chỉ Báo & Pattern
AI Contextv1.4
Danh Mục Đầu Tưv2.0
Theo Dõi & Cảnh Báov2.0
Backtest & Phiên Tương Tựv2.0
Trình Duyệt & Proxyv2.0
Lịch Giao Dịch - Calendar
Vàng, Tỷ Giá, Tin Tức
MCP Serverv1.4
Watchlistv1.4
Bar
Quote
Tick
TopMover
CompanyProfile
ScreenRow
GoldQuote & FxRate
  1. Tài Liệu
  2. Key Features
  3. Advanced
  4. Proxy

Trình Duyệt & Proxy

Dùng vnstock-js trong client component qua proxy có sẵn.

Xem .md

VietCap chặn request từ trình duyệt (CORS) và còn từ chối Origin lạ ở phía server. Thư viện kèm sẵn một proxy nhỏ để đặt trên server của bạn; client trên trình duyệt gọi qua đó.

Next.js (App Router)

// app/api/vnstock/[...path]/route.ts
import { nextHandler } from "vnstock-js/proxy";

export const { GET, POST } = nextHandler();
// components/price.tsx
"use client";
import { useEffect, useState } from "react";
import { createClient, type Quote } from "vnstock-js";

const vn = createClient({ proxy: "/api/vnstock" });

export function Price({ symbol }: { symbol: string }) {
  const [q, setQ] = useState<Quote | null>(null);
  useEffect(() => {
    vn.stock(symbol).price().then(setQ);
  }, [symbol]);
  return <span>{q ? q.price.toLocaleString() : "…"}</span>;
}

Cloudflare Workers, Deno, Bun

import { workerHandler } from "vnstock-js/proxy";

export default { fetch: workerHandler() };

Express

import express from "express";
import { expressHandler } from "vnstock-js/proxy";

const app = express();
app.use(expressHandler());

Tuỳ chọn

Cả ba hàm nhận cùng tuỳ chọn:

Tuỳ chọnMặc địnhÝ nghĩa
basePath/api/vnstockĐường dẫn gắn proxy; client đặt proxy trùng giá trị này
cacheSeconds30Số giây CDN được cache phản hồi GET thành công; 0 để tắt

An toàn

  • Proxy không phải open proxy: chỉ chuyển tiếp tới hai host VietCap mà thư viện dùng, theo danh sách đường dẫn cố định. Đường dẫn lạ (kể cả kiểu %2e%2e) bị chặn với 403.
  • Header phiên của VietCap chỉ được gắn ở server.
  • Nguồn không phản hồi thì trả 502.

Không cần proxy khi

  • Gọi từ Server Component, API Route, Server Action, script Node: dùng thẳng vn.
  • Dữ liệu nền (danh mục mã, lịch nghỉ, lịch sử khối ngoại) tải từ raw GitHub, vốn cho phép CORS.
  • Chỉ báo ở vnstock-js/indicators: hàm thuần, không gọi mạng.
  • watch() ở chế độ stream kết nối WebSocket tới SSI. Nếu WebSocket bị chặn trên môi trường của bạn, dùng { mode: 'poll' }.
PreviousBacktest & Phiên Tương Tự
NextLịch Giao Dịch - Calendar

Nội Dung

Next.js (App Router)Cloudflare Workers, Deno, BunExpressTuỳ chọnAn toànKhông cần proxy khi