supperchym
Senior Member
Github đó bị xoá rồi, mod Filỏ nói ngay mấy bài trc ko chịu đọc gì cả :v.Nay thấy mai báo về, e vào thì thấy báo lỗi ntn là sao bác nhỉ
Xem tệp đính kèm 3025291
Github đó bị xoá rồi, mod Filỏ nói ngay mấy bài trc ko chịu đọc gì cả :v.Nay thấy mai báo về, e vào thì thấy báo lỗi ntn là sao bác nhỉ
Xem tệp đính kèm 3025291
sync update mới nhất đi bác, sau đó vào active cập nhập lại file main.yml mới chạy là bt ngay
Thanks 2 bác, e làm được rồi. N không lỗi nên cũng k vào topic các bác ạGithub đó bị xoá rồi, mod Filỏ nói ngay mấy bài trc ko chịu đọc gì cả :v.

sync update mới nhất đi bác, sau đó vào action cập nhập lại file main.yml mới chạy là bt ngay
Github đó bị xoá rồi, mod Filỏ nói ngay mấy bài trc ko chịu đọc gì cả :v.
E cũng bị lỗi này các bác ạ, fix sao thế ạThanks 2 bác, e làm được rồi. N không lỗi nên cũng k vào topic các bác ạ![]()
nó chạy ngon nên lâu lắm cũng ko vào topic. Đã sync folk r chạy lại vẫn bịSửa lại file file main.yml thôiE cũng bị lỗi này các bác ạ, fix sao thế ạnó chạy ngon nên lâu lắm cũng ko vào topic. Đã sync folk r chạy lại vẫn bị
Sửa lại file workflow thôi:
Đã pull request rồi chờ ông kia merge vào thôi.Mã:name: Update Filter Lists on: schedule: - cron: "0 3 * * 1" push: branches: - main workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: NODE_ENV: production jobs: cgps: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: repository: "mrrfv/cloudflare-gateway-pihole-scripts" ref: "v1" - name: Install Node.js uses: actions/setup-node@v4 with: node-version-file: ".node-version" - name: Install npm dependencies run: npm ci - name: Download allowlists run: npm run download:allowlist env: ALLOWLIST_URLS: ${{ vars.ALLOWLIST_URLS }} - name: Download blocklists run: npm run download:blocklist env: BLOCKLIST_URLS: ${{ vars.BLOCKLIST_URLS }} - name: Delete old rules and lists run: npm run cloudflare-delete env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }} DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} - name: Create new rules and lists run: npm run cloudflare-create env: BLOCK_PAGE_ENABLED: ${{ vars.BLOCK_PAGE_ENABLED }} CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }} DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} - name: Send ping request if: env.PING_URL != '' run: | curl "${{ env.PING_URL }}" env: PING_URL: ${{ secrets.PING_URL }} keepalive: if: github.event_name == 'schedule' runs-on: ubuntu-latest permissions: actions: write steps: - uses: liskin/gh-workflow-keepalive@v1
![]()
fix keepalive by FiorenMas · Pull Request #165 · mrrfv/cloudflare-gateway-pihole-scripts
Closed #164github.com
Vào trang https://<teams id>.cloudflareaccess.com/warpHoàng tử làm ơn chỉ cách xài script đi, mấy món này mình gà quá xá.![]()
usque register --jwt <token>
usque socks -b 127.0.0.1 -p 9099
CreateObject("WScript.Shell").Run "usque socks -b 127.0.0.1 -p 9099",0,True



thằng này muốn tạo conf dùng với wgtunnel trên android thì ntn vậy ngài?Hướng dẫn sử dụng UsqueTóm tắt:
Usque là một phần mềm mã nguồn mở để sử dụng giao thức mới Masque của Cloudflare.
Masque dùng giao thức HTTP/3 sử dụng cổng 443 trùng với các dữ liệu https thông thường khác nên khó bị phát hiện hoặc ngăn chặn hơn so với giao thức cũ Wireguard.
1/ Tải về:
Nếu sử dụng Windows thì tải bản usque_XXX_windows_amd64.zip (có tên windows_amd64 ở đuôi)![]()
Release v4.2.1 · Diniboy1123/usque
Changelog 6aa03fc api: fix: Reduce PROTOCOL_VIOLATION errors on quic based connectionsgithub.com
Sau khi tải về giải nén ra bỏ cố định folder đâu đó trong máy.
2/ Lấy token:
Làm như hướng dẫn này để lấy token:
3/ Thiết lập:Vào trang https://<teams id>.cloudflareaccess.com/warpHoàng tử làm ơn chỉ cách xài script đi, mấy món này mình gà quá xá.![]()
Thay cái team id bằng id team cloudflare đã tạo, sau đó đăng nhập blabla bằng cái mail đã đăng ký. Sau khi đăng nhập xong tới bước này. Chuột phải, view page source
![]()
Thấy dòng này, copy cái dòng này
![]()
Bỏ vào notepad, bật word wrap cho dễ nhìn
![]()
Xóa phần thừa đầu với cuối đi ra được token
![]()
Rồi vào github, đăng nhập tài khoản github. Rồi vào đây...
Sau khi có token, mở cmd folder usque như sau:
Gõ cmd vào explorer như hình khi đang mở folder usque
Xem tệp đính kèm 3033643
Gõ lệnh:
Trong đó <token> thay thế bởi token kiếm được ở bước trên.Mã:usque register --jwt <token>
Sẽ có bảng hỏi có đống ý điều khoản sử dụng của Cloudflare hay không. Gõ y rồi ấn enter
Chờ một lúc sẽ xuấy hiện file config.json là đã thành công.
4/ Sử dụng:
Tạo file .bat bằng notepad với nội dung
Để dùng không hiển thị cửa sổ cmd thì tạo file .vbs với nội dungMã:usque socks -b 127.0.0.1 -p 9099
Lúc này dùng bất cứ cái gì để chạy được sock5 có ip là 127.0.0.1 port 9099. Tham khảo:Mã:CreateObject("WScript.Shell").Run "usque socks -b 127.0.0.1 -p 9099",0,True
Hướng dẫn cách fake IP mà không fake IP để vượt DPI những trang cần vượt sử dụng ProxySwitchy Omega ở #1 tại một số bạn không dùng ECH được.
Ưu điểm:
- Hoạt động trên 100% trang web thậm chí không cần ECH, không quan tâm là Medium, Bonhup hay ẾchVid...
- Giải pháp mang tính toàn tổng hơn sử dụng cách thức băm nhỏ gói tin ClientHello ra để vượt cạn
- KHÔNG HỀ fake IP, nghĩa là tốc độ sẽ nguyên 100%, không tốn 1 xu, không dựa dẫm vào một ai cả
- Không gây lỗi web như GoodbyeDPI vì nó chỉ hoạt động trên những trang cần thiết chứ không toàn bộ hệ thống
Cách thức:
- ...
được bác ạ, nếu tivi bác kết nối vào mạng mà đã được cấu hình cái này sẵn ở modemXài cho tv được ko vậy ạ ?
thằng này muốn tạo conf dùng với wgtunnel trên android thì ntn vậy ngài?
Vào trang https://<teams id>.cloudflareaccess.com/warpHoàng tử làm ơn chỉ cách xài script đi, mấy món này mình gà quá xá.![]()
chỗ step3 điền medium.com hay voz.vn v hoàng tửVào chỗ này
Xem tệp đính kèm 2006779
Điền giống y vậy
Xem tệp đính kèm 2006780
Chọn Domain, Matches regex, và gõ tên domain vào. Nếu nhiều domain nhấn nút Or
Chỗ step 3 chọn như hình:
Xem tệp đính kèm 2031815
Rồi bấm save là xong.
Còn với web nào không có cloudflare thì vào đây để lấy ip điền vào step 3.
Google Public DNS (https://dns.google/)
Muốn check có cloudflare hay ko thì vào đây
https://checkforcloudflare.selesti.com/
Mà cũng tùy nhà mạng, có nhà mạng chặn ip thì cách này chịu.

cái DDNS của mình là lấy đâu á @FiorenHướng dẫn sử dụng Cloudflare Worker để cập nhật IP match với Cloudflare qua DDNS:
Tại sao nên dùng: Bạn có thể set dns dạng 172.64.36.1, 172.64.36.2 thẳng vào router và sử dụng cho tất cả các thiết bị mạng có trong nhà mà không cần phải dùng DoH, DoT. Tốc độ truy vấn rất nhanh
(1) Tạo Worker và chỉnh sửa code theo code dưới đây:
- Yêu cầu có ddns trỏ về IP nhà.
- Cloudflare API, Cloudflare Email, API Key, Cloudflare ID (có hướng dẫn lấy tại #1)
![]()
Tiếp theo
![]()
Tiếp theo
Tiếp theo, nhập Name cho Worker![]()
![]()
Kéo xuống cuối trang nhấn Deploy
![]()
Tiếp theo, nhấn Edit code
![]()
Tiếp theo, xoá tất cả các code, sửa code theo dưới đây:
![]()
Điền các thông tin sau:
![]()
- Chỉnh sửa các thông tin: accountEmail, accountId (Cloudflare ID), apiKey, domain (DDNS của bạn).
=> Save and deploy.Mã:addEventListener('scheduled', (event) => { event.waitUntil(handleRequest()); }); addEventListener('fetch', (event) => { return event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const accountEmail = ''; const accountId= ''; const apiToken = ''; const domain = ''; const ip = await resolveDomain(domain); if (ip) { console.log(`The IP address of ${domain} is: ${ip}`); const locationId = await getLocationId(accountId, apiToken, accountEmail); if (locationId) { console.log(`The location ID is: ${locationId}`); const updateResult = await updateLocation(accountId, apiToken, locationId, ip, accountEmail); if (updateResult) { console.log("Update location successful:"); console.log(`Location ID: ${updateResult.id}`); console.log(`Name: ${updateResult.name}`); console.log(`IP: ${updateResult.networks[0].network}`); console.log(`Subnet: ${updateResult.networks[0].network.split('/')[1]}`); console.log(`Created At: ${updateResult.created_at}`); console.log(`Updated At: ${updateResult.updated_at}`); } else { console.log("No location data found."); } } else { console.log("No locations found."); } } else { console.log(`Failed to resolve the IP address of ${domain}`); } return new Response('Worker execution completed', { status: 200 }); } async function resolveDomain(domain) { const apiURL = 'https://dns.google.com/resolve'; const queryURL = new URL(apiURL); queryURL.searchParams.append('name', domain); queryURL.searchParams.append('type', 'A'); const response = await fetch(queryURL); const data = await response.json(); if (data.Answer instanceof Array && data.Answer.length > 0) { const ipAddresses = data.Answer .filter(answer => answer.type === 1) .map(answer => answer.data); return ipAddresses[0] || null; } else { return null; } } async function getLocationId(accountId, apiToken, accountEmail) { const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/gateway/locations`; const response = await fetch(url, { headers: { 'Authorization': `Bearer ${apiToken}`, 'Content-Type': 'application/json', 'X-Auth-Email': accountEmail, 'X-Auth-Key': apiToken } }); if (response.ok) { const data = await response.json(); const result = data.result; return result.length > 0 ? result[0].id : null; } else { return null; } } async function updateLocation(accountId, apiToken, locationId, ip, accountEmail) { const url = `https://api.cloudflare.com/client/v4/accounts/${accountId}/gateway/locations/${locationId}`; const response = await fetch(url, { method: 'PUT', headers: { 'Authorization': `Bearer ${apiToken}`, 'Content-Type': 'application/json', 'X-Auth-Email': accountEmail, 'X-Auth-Key': apiToken }, body: JSON.stringify({ client_default: true, ecs_support: true, name: 'RouterZTE', networks: [ { network: `${ip}/32` } ] }) }); if (response.ok) { const data = await response.json(); return data.result || null; } else { return null; } }
(2) Tạo Cron trigger để tự động chạy script cập nhật IP qua DDNS mỗi 1 phút (rất nhanh).
![]()
(3) Chỉnh sửa giá trị Minutes là 1 (Chạy worker mỗi phút), sau đó nhấn Add Trigger
![]()
(4) Kết quả như thế này là hoàn tất:
![]()
4. Cập nhật DNS cho thiết bị của bạn:
IPV4:
172.64.36.1
172.64.36.2
---
Máy tính:
![]()
Các thiết bị khác tương tự
Tốt nhất là đặt lên Router tổng để áp dụng cho tất cả các thiết bị trong nhà.
5. Kết thúc
Chúc các bạn cấu hình thành công. Sử dụng DNS dạng này cảm giác lướt web rất nhanh, không bị lỗi DoH (Mikrotik DoH không ổn định).
Kiểm tra xem đã chặn quảng cáo chưa:
Link 1: Test Ad Block - Toolz (https://d3ward.github.io/toolz/adblock.html)
Link 2: AdBlock Test (https://iblockads.net/test)
Nhớ flush dns trước khi test nhé.
CMD: ipconfig /flushdns
*đã cập nhật ảnh lỗi
sorry lâu quá ko vào topic quên sạchsao mình thấy nó vẫn chạy mà, check ip trong dns location vẫn đúng ip mà?Cloudflare hết cho cập nhật rồi. Giờ mỗi khi đổi ip phải vô chỉnh tay
chắc nó chạy không thế thím, tắt router mở lại đổi ip xem có cập nhật khôngsao mình thấy nó vẫn chạy mà, check ip trong dns location vẫn đúng ip mà?
Xem tệp đính kèm 3042355

override = voz.vnchỗ step3 điền medium.com hay voz.vn v hoàng tử![]()
kóXài cho tv được ko vậy ạ ?
chỉnh tay đc à, nghe có vẻ có ý tưởngCloudflare hết cho cập nhật rồi. Giờ mỗi khi đổi ip phải vô chỉnh tay

Có, thêm vô dns location mới thì nó sẽ dùng ip hiện có. Hoặc là tắt dns ipv4 xong bật lại thì nó sẽ updateoverride = voz.vn
kó
chỉnh tay đc à, nghe có vẻ có ý tưởng![]()
confirm lại đoạn worker còn hoạt động ko v Fi ơioverride = voz.vn
kó
chỉnh tay đc à, nghe có vẻ có ý tưởng![]()
tắt router bật lại vẫn update ip chuẩn nha, worker hoạt động bình thườngCó, thêm vô dns location mới thì nó sẽ dùng ip hiện có. Hoặc là tắt dns ipv4 xong bật lại thì nó sẽ update
ai biếtconfirm lại đoạn worker còn hoạt động ko v Fi ơi
tắt router bật lại vẫn update ip chuẩn nha, worker hoạt động bình thường
cái github hôm qua t vừa test chạy ok nhé, dùng api key mới đc k phải api token