HAR to cURL Converter: แปลง request ที่จับได้จากเบราว์เซอร์เป็นคำสั่ง cURL แบบคัดลอกแล้ววางได้ทันที
แปลงไฟล์ HAR จาก Chrome หรือ Firefox เป็นคำสั่ง cURL พร้อมใช้งาน ด้วยตัวเลือก mask header, cookie และ auth — ประมวลผลในเครื่อง 100% ด้วย HAR to cURL Converter
Table of Contents
HAR to cURL Converter: แปลง request ที่จับได้จากเบราว์เซอร์เป็นคำสั่ง cURL แบบคัดลอกแล้ววางได้ทันที
API พังในเบราว์เซอร์แต่กลับทำงานได้ปกติในเครื่องเรา แล้วมีคนขอให้ "ส่ง request มาดูหน่อย" — การพิมพ์ request ที่พังขึ้นมาใหม่ด้วยมือเป็นเรื่องผิดพลาดง่าย: พิมพ์ URL จากความจำ ลืม header บางตัว ตก cookie และแก้ JSON body พลาดระหว่างทาง ทั้งที่ไฟล์ HAR ที่เบราว์เซอร์บันทึกไว้แล้วมีข้อมูลครบทุกอย่าง — method, URL เต็ม, header ทุกตัว, cookie ทั้งหมด และ request body ตามจริง โดย HAR to cURL Converter จะแปลง capture นั้นเป็นคำสั่ง cURL แบบคัดลอกแล้ววางได้ทันทีภายในไม่กี่วินาที
ขั้นตอนออกแบบมาให้ง่ายที่สุด ลากไฟล์ .har ที่ export จาก DevTools ของ Chrome หรือ Firefox มาวางบนหน้าเว็บ เลือก request ที่สนใจ แล้วเครื่องมือจะสร้างคำสั่งพร้อมใช้ที่มี method, URL, header, cookie และ body ครบถ้วน ก่อนกดคัดลอก มี toggle สำหรับ mask สามตัวให้เลือกลบ header, cookie และ Authorization ออก เพื่อให้คำสั่งที่จะวางลง ticket, แชท หรือเอกสารที่แชร์กันปลอดภัย
เช่นเดียวกับเครื่องมือทุกตัวบนเว็บนี้ การแปลงทำงานในเครื่อง 100% ไฟล์ HAR เป็นข้อมูลที่ sensitive ที่สุดชนิดหนึ่งที่นักพัฒนาต้องจัดการเป็นประจำ เพราะข้างในมี session token และข้อมูลยืนยันตัวตนที่ยังใช้งานได้จริง และที่นี่ไม่มีการอัปโหลดอะไรขึ้นเซิร์ฟเวอร์เลย
ทำไมต้องใช้ HAR to cURL Converter?
- Reproduction ตรงต้นฉบับ ไม่ต้องพิมพ์ใหม่. คำสั่งถูกสร้างจาก request จริงที่เบราว์เซอร์ส่งไป ไม่ใช่จากความจำ — method ถูกต้อง, URL พร้อม query string เต็ม, header ทุกตัวที่หน้าเว็บแนบมาจริง และ body ครบทุก byte
- Mask ก่อนแชร์ทุกครั้ง. toggle อิสระสามตัวลบ header ที่ sensitive, cookie และ credential ใน Authorization ออกจากผลลัพธ์ ทำให้คำสั่งที่วางลง bug report ไม่หลุด session ของคุณ
- ไม่ต้องตั้ง proxy. เครื่องมืออย่าง "copy as cURL" อยู่ใน DevTools ของเบราว์เซอร์ แต่ request จากแอปมือถือ, CLI client หรือ capture ที่เพื่อนร่วมงานส่งมาให้ไม่ได้อยู่ในเบราว์เซอร์ของคุณ — ขอแค่มีไฟล์ HAR ก็แปลงได้
- รองรับ export จาก Chrome และ Firefox. ทั้งสองเบราว์เซอร์เขียนไฟล์ตาม format HAR เดียวกัน และตัวแปลงจัดการความต่างเล็ก ๆ ในการบันทึก header และ timing ของแต่ละเจ้าได้
- ไม่มีอะไรออกจากเครื่อง. การ parse เกิดขึ้นในเบราว์เซอร์ล้วน ๆ — ปลอดภัยแม้กับ capture จาก dashboard ภายใน, staging environment และ flow ที่ต้องล็อกอินของ production
- หนึ่ง request เข้า หนึ่งคำสั่งออก. ไม่ต้องติดตั้งโปรเจกต์ ไม่ต้อง import เข้า API client ไม่ต้องตั้ง schema — วางไฟล์ เลือก entry คัดลอกคำสั่ง จบ
ฟีเจอร์หลัก
| ฟีเจอร์ | ทำอะไร |
|---|---|
| โหลดไฟล์ HAR | รับไฟล์ .har จาก DevTools ของ Chrome และ Firefox หรือ paste HAR JSON ก็ได้ |
| เลือกรายการ request | แสดง request ที่จับได้ทุกรายการ เพื่อเลือกเฉพาะตัวที่พัง |
| สร้างคำสั่งครบวงจร | ส่งออก method, URL, header, cookie และ request body เป็น cURL flag ที่ใช้ได้จริง |
| Toggle mask header | แทนค่า header ที่ sensitive ด้วย placeholder แบบ redact |
| Toggle mask cookie | ลบ cookie ทั้งชุดออก เพื่อไม่ให้คำสั่งที่แชร์ไป hijack session ได้ |
| Toggle mask auth | Redact ค่าใน Authorization header รวมถึง scheme แบบ Bearer และ token |
| คัดลอกคลิกเดียว | วางคำสั่งสุดท้ายลง clipboard พร้อมใช้ใน terminal ทันที |
รายละเอียดที่ควรรู้:
- ผลลัพธ์พร้อมลง shell. คำสั่งที่ได้ใช้ flag syntax มาตรฐาน วางลง bash, zsh หรือ shell สไตล์ POSIX ได้เลยโดยไม่ต้องแก้
- การ mask เป็นตัวเลือกและแยกจากกัน. คุณเลือกได้ทีละอันว่าจะ scrub header, cookie หรือ auth หรือไม่ mask เลยถ้าคำสั่งนั้นไว้ใช้ใน terminal ของตัวเอง
วิธีใช้งาน
- จับไฟล์ HAR. ใน Chrome, Edge หรือ Firefox: เปิด DevTools สลับไปที่ tab Network ทำ request ที่พังซ้ำ แล้วคลิกขวาที่รายการ request เลือก "Save all as HAR" — ถ้าอยากได้ capture ที่สะอาด ให้เคลียร์ log ก่อนเพื่อให้เหลือเฉพาะที่ต้องการ
- วางไฟล์ลงตัวแปลง. เปิด HAR to cURL Converter แล้วลากไฟล์ .har มาวางบนหน้าเว็บ หรือ paste HAR JSON ตรง ๆ รายการที่ parse แล้วจะขึ้นทันที
- เลือก request. เลื่อนดูรายการ entry แล้วเลือก request ที่ต้องการ replay — มักเป็นตัวที่ status code พังหรือ endpoint ที่กำลังสอบสวน
- เปิด toggle mask ตามความจำเป็น. ถ้าคำสั่งจะออกจากเครื่องคุณ ให้เปิด mask ทั้ง header, cookie และ auth เพื่อ redact credential ก่อนคัดลอก
- คัดลอกแล้ว replay. กดคัดลอก วางคำสั่งลง terminal แล้วกด Enter — ตอนนี้ request รันอยู่นอกเบราว์เซอร์ ที่คุณจะเปลี่ยน input, จับเวลา และดู response ดิบได้เต็มที่
ทำไมต้อง Mask ก่อนแชร์
ไฟล์ HAR คือการบันทึกที่เชื่อถือได้ทุกอย่าง และนั่นแหละคือปัญหา เมื่อมันออกจากเครื่องคุณ Authorization header มี Bearer token ของคุณติดไปด้วย — ใครได้รับก็ถือตัวตนของคุณจนกว่า token จะหมดอายุ Session cookie ยืนยัน request ได้โดยไม่ต้องพึ่ง header เลย ส่งคำสั่งต่อไปก็เท่ากับให้คนอื่นสวมบทเป็นคุณ Token ยังซ่อนอยู่ใน query string ได้อีก เช่น ?access_token=... บน endpoint แบบ OAuth และ presigned URL ที่ฝัง credential ไว้ใน path กับ query โดยตรง
แต่ละ toggle ลบอะไรออก. toggle header จะ redact ค่าของ header ที่ sensitive แต่เก็บชื่อ header ไว้ โครงสร้างของ request จึงไม่หาย toggle cookie ลบ Cookie header ออกทั้งตัว — request ที่ replay จะไปแบบไม่มีการยืนยันตัวตน ซึ่งมักเป็นสิ่งที่อยากให้เพื่อนร่วมงานเห็น toggle auth เจาะไปที่ Authorization header โดยเฉพาะ แทนค่าด้วย placeholder แบบ redact สิ่งที่รอดจากการ mask คือทุกอย่างที่ทำให้ request ยัง debug ได้: method, URL, content type, รูปร่างของ body และ header ที่ไม่ sensitive เช่น header บอกเวอร์ชัน API หรือ feature flag
วิธี replay คำสั่งที่ mask แล้วอย่างปลอดภัย. สร้างคำสั่งโดยเปิด mask วางลง terminal แล้วรัน — มักได้ 401 หรือ 403 กลับมา ซึ่งนั่นแหละคือจุดประสงค์: ยืนยันโครงสร้างของ request โดยไม่เปิดเผย credential ถ้าต้องการ replay แบบมีการยืนยันตัวตน ให้รันคำสั่งโดยแทน token ของตัวเองในเครื่องเท่านั้น และห้ามแชร์เวอร์ชันนั้น คำสั่งที่ mask แล้วคือ artifact ที่แชร์ได้ ส่วนฉบับมี credential ให้อยู่กับเครื่องคุณ
Flag ที่เครื่องมือสร้างให้. method อยู่ใน -X (เช่น -X POST), header แต่ละตัวอยู่ใน -H 'Name: value' ของตัวเอง, request body อยู่ใน --data และ --compressed ขอ response แบบบีบอัดจากเซิร์ฟเวอร์เหมือนที่เบราว์เซอร์ทำ ผลลัพธ์หลัง mask หน้าตาประมาณนี้:
curl -X POST 'https://api.example.com/v2/orders' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ********' \
--data '{"sku":"A-1001","qty":2}' \
--compressed
ผู้รับเห็น request ที่สมบูรณ์และรันได้จริง — แต่ไม่มีทางกลายเป็นคุณได้
กรณีใช้งานจริง
Bug Report ที่วิศวกร replay ต่อได้
"ล็อกอินแล้ว error" คือแค่ภาพหน้าจอ แต่คำสั่ง cURL ที่ mask แล้วคือ reproduction จับ request ที่พัง mask credential แล้ววางคำสั่งลง ticket วิศวกรรันครั้งเดียวก็เห็น status code, response body และ header ตรงตามที่เกิดขึ้น — ไม่ต้องถามกลับเรื่อง environment ไม่ต้องคุยหลายรอบว่าหมายถึง endpoint ไหน
Debug API โดยไม่ต้องตั้ง proxy
Desktop API client สะดวก แต่การตั้ง proxy เพื่อดู traffic เพราะคำถามเดียวถือว่าหนักไป เมื่อคุณมีไฟล์ HAR อยู่แล้ว — จาก DevTools ของตัวเองหรือจากคนที่ export มาให้ — ตัวแปลงเปลี่ยนมันเป็นคำสั่งที่รันได้ในไม่กี่วินาที จาก terminal คุณแก้พารามิเตอร์ทีละตัว จับเวลาด้วย time และเทียบ response ดิบได้ละเอียดกว่าในเบราว์เซอร์
จับ traffic แอปมือถือผ่าน proxy เป็นไฟล์ HAR
แอปมือถือไม่มีปุ่ม "copy as cURL" แต่มันเคารพ system proxy ชี้โทรศัพท์ไปที่ proxy บนเครื่อง desktop บันทึก session เป็นไฟล์ HAR แล้ววางลงตัวแปลง API call ของแอปเนทีฟจะกลายเป็นคำสั่งใน terminal ที่ replay, แก้ไข และแชร์ (แบบ mask แล้ว) ให้ทีม backend ได้
Reproduction ไว้ไล่ regression
เมื่อ release ใหม่ทำ endpoint พัง จับ request ไว้ครั้งเดียว แปลงเป็นคำสั่ง แล้วแปะลง channel ของ incident หรือ test script ทุกคนในทีมรัน request เดิมซ้ำหลังพยายามแก้แต่ละรอบ แล้วยืนยันได้ว่า status code และ response กลับมาเป็นปกติหรือยัง คำสั่งเดียวกันยังเป็น seed ของ automated regression test หลังปิด incident ได้อีกด้วย
แนวทางปฏิบัติที่ดี
- Mask ก่อนแชร์ทุกครั้ง. toggle header, cookie และ auth มีไว้เพราะไฟล์ HAR มี credential ติดมาเป็นค่าเริ่มต้น เปิดมันเสมอสำหรับทุกอย่างที่ออกจากเครื่อง แม้จะส่งให้เพื่อนร่วมงาน
- จับแค่ request ที่พังตัวเดียวเมื่อทำได้. เคลียร์ network log ทำให้เกิด failure ซ้ำหนึ่งครั้งแล้ว export — HAR ที่โฟกัสจะกลายเป็นคำสั่งที่โฟกัส และไม่พา request ที่ไม่เกี่ยวเข้าไปรกใน ticket
- อย่าลืมตรวจ token ใน query string ด้วย. การ mask ครอบคลุม header และ cookie แต่ credential ที่ฝังใน URL ต้องลงมือดูเอง ถ้า URL ที่จับได้มี access_token หรือลายเซ็นแบบ presigned ให้แทนพารามิเตอร์นั้นก่อนแชร์
- Reproduce ให้ใกล้จุดที่พังที่สุด. export HAR จากสถานะที่พังจริง — session เดิม, input เดิม — เพื่อให้คำสั่ง replay บั๊ก ไม่ใช่เวอร์ชันที่ทำงานปกติของมัน
- แนบบริบท environment ไปกับคำสั่งด้วย. บรรทัด curl ไม่บอกว่ามาจาก staging server ไหน feature flag อะไร หรือบริบทบัญชีใด — เขียนอธิบายหนึ่งประโยคลง ticket ด้วย
- เก็บไฟล์ HAR ต้นฉบับไว้เป็นส่วนตัวแม้คำสั่งจะเป็นสาธารณะ. คำสั่ง cURL ที่ mask แล้วปลอดภัยต่อการแชร์ แต่ไฟล์ HAR ต้นทางแทบไม่เคยเป็น อย่าแนบทั้งสองไปพร้อมกัน
คราวหน้าที่ request เริ่มดื้อ ข้ามการพิมพ์ใหม่และการเดาไปได้เลย บันทึก HAR วางลง HAR to cURL Converter mask ส่วนที่สำคัญ แล้ววางคำสั่งที่ทั้งทีมรันต่อได้ จากเดิมที่เคยเป็น "มัน error เป็นบางที เอาภาพหน้าจอไปก่อนนะ" จะกลายเป็น reproduction บรรทัดเดียว
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- HAR File Analyzer — อ่าน capture ทั้งไฟล์ก่อน: waterfall, request ที่ช้าที่สุด และสถิติ status code
- URL Parser — แยกส่วน URL ยาว ๆ จาก capture และส่อง query parameter ที่ซ่อนอยู่
- JSON Formatter — จัดรูป HAR JSON หรือ request body ใน entry ที่คุณแปลงให้อ่านง่าย
ขอให้ทุกคำสั่งที่วางกลับมาพร้อม status code ที่รอคอย!
คำถามที่พบบ่อย
ถ: ไฟล์ HAR ของฉันถูกอัปโหลดไปที่ไหนหรือเปล่า?
ตอบ: ไม่ การ parse และการสร้างคำสั่งเกิดขึ้นในเบราว์เซอร์ทั้งหมด capture — รวมถึง token และ cookie ที่อยู่ข้างใน — ไม่เคยออกจากเครื่องของคุณ
ถ: รองรับไฟล์ HAR จากเบราว์เซอร์ไหนบ้าง?
ตอบ: export จาก Chrome และ Firefox ใช้ได้ทั้งคู่ เพราะเป็นไปตาม format HAR เดียวกัน ส่วน Edge ที่อยู่บนฐาน Chromium ก็สร้าง capture ที่ใช้ร่วมกันได้เช่นกัน
ถ: แต่ละ toggle ของการ mask ลบอะไรออกบ้าง?
ตอบ: toggle header จะ redact ค่าของ header ที่ sensitive, toggle cookie ลบ Cookie header ออกทั้งตัว และ toggle auth แทนค่าใน Authorization header ด้วย placeholder แบบ redact ส่วน method, URL, content type, body และ header ที่ไม่ sensitive ยังอยู่ครบ เพื่อให้ request ยัง debug ต่อได้
ถ: คำสั่งที่ mask แล้วกลับมาเป็น 401 — เป็นปัญหาไหม?
ตอบ: ไม่ใช่ และคาดหมายไว้แล้ว เพราะการ mask ลบ credential ออก เซิร์ฟเวอร์จึงปฏิเสธ request นั่นยืนยันว่าโครงสร้างของ request ยังครบโดยไม่เปิดเผย session ของคุณ ถ้าต้องการ replay แบบมีการยืนยันตัวตน ให้แทน token ของตัวเองในเครื่องเท่านั้น
ถ: ใช้กับ request ที่จับจากแอปมือถือได้ไหม?
ตอบ: ได้ ส่ง traffic ของโทรศัพท์ผ่าน desktop proxy บันทึก session เป็นไฟล์ HAR แล้ววางลงตัวแปลง API call ของแอปจะกลายเป็นคำสั่ง cURL ปกติที่ replay และแชร์ต่อได้