Kimlik Doğrulama
MacroStick API’sine yapılan istekler kimlik doğrulama gerektirir. Kimlik bilgisi eksik veya hatalı olan istekler 401 Unauthorized yanıtı alır; istek işlenmez.
Yöntem: HTTP Basic Authentication
MacroStick, endüstri standardı HTTP Basic Authentication kullanır. Her HTTP isteğinde Authorization başlığı aşağıdaki formatta gönderilmelidir:
Authorization: Basic <base64(kullanıcıadı:şifre)>
Örnek format:
KULLANICI_ADI:SIFRE → base64 → Authorization başlığı
Modern HTTP kütüphanelerinin büyük çoğunluğu bu işlemi otomatik yapar; base64 kodlamayı elle hesaplamanıza gerek kalmaz.
Kimlik Bilgileri
| Alan | Değer |
|---|---|
| Kullanıcı adı | Kutudan çıkan giriş bilgileri kartındaki kullanıcı adı |
| Şifre | Kutudan çıkan karttaki veya web arayüzünde değiştirdiğiniz şifre |
Varsayılan giriş bilgilerini dokümanda yazmayın; ürün kutusundaki kartı kullanın. Şifreyi değiştirdiyseniz API isteklerinde yeni şifreyi kullanmanız gerekir.
Şifre Formatı
Yönetici şifresi web arayüzünden değiştirilebilir. Şifre uzunluğu 3-20 karakter aralığında olmalıdır.
| Örnek | Durum |
|---|---|
123 | Geçerli |
macrostick-2026 | Geçerli |
ab | Geçersiz (3 karakterden kısa) |
bu-sifre-cok-uzun-olur | Geçersiz (20 karakterden uzun) |
İstek Örnekleri
cURL
-u bayrağı kullanıcıadı:şifre alır ve Authorization: Basic başlığını otomatik oluşturur.
curl -X POST http://192.168.7.1/api/core_payload \
-u "KULLANICI_ADI:SIFRE" \
-H "Content-Type: application/json" \
-d '{"payload": "a502000400000000000000000000ef00a5020000000000000000000000e100"}'
Yanıt kodunu ve gövdesini görmek için -v ekleyin:
curl -v -X POST http://192.168.7.1/api/core_payload \
-u "KULLANICI_ADI:SIFRE" \
-H "Content-Type: application/json" \
-d '{"payload": "a502000400000000000000000000ef00a5020000000000000000000000e100"}'
Python — requests
auth parametresi Basic Auth başlığını otomatik ekler; ayrıca Content-Type başlığını da otomatik ayarlar.
import requests
response = requests.post(
"http://192.168.7.1/api/core_payload",
auth=("KULLANICI_ADI", "SIFRE"),
json={"payload": "a502000400000000000000000000ef00a5020000000000000000000000e100"}
)
print(response.status_code) # 200: başarılı, 401: kimlik hatası
print(response.text)
Kimlik bilgilerini yeniden kullanmak istiyorsanız bir Session nesnesiyle sabitleyin:
import requests
session = requests.Session()
session.auth = ("KULLANICI_ADI", "SIFRE")
# Artık her istekte auth parametresi tekrar yazmanıza gerek yok
session.post("http://192.168.7.1/api/core_payload", json={"payload": "..."})
session.post("http://192.168.7.1/api/core_payload", json={"payload": "..."})
Python — urllib (bağımlılıksız)
Üçüncü taraf kütüphane kullanmadan:
import urllib.request
import base64
import json
url = "http://192.168.7.1/api/core_payload"
credentials = base64.b64encode(b"KULLANICI_ADI:SIFRE").decode()
payload = json.dumps({"payload": "a502000400000000000000000000ef00a5020000000000000000000000e100"}).encode()
req = urllib.request.Request(url, data=payload, method="POST")
req.add_header("Authorization", f"Basic {credentials}")
req.add_header("Content-Type", "application/json")
with urllib.request.urlopen(req) as response:
print(response.status)
JavaScript — fetch (Tarayıcı / Node.js)
const credentials = btoa("KULLANICI_ADI:SIFRE");
const response = await fetch("http://192.168.7.1/api/core_payload", {
method: "POST",
headers: {
"Authorization": `Basic ${credentials}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
payload: "a502000400000000000000000000ef00a5020000000000000000000000e100"
})
});
console.log(response.status);
Node.js — https/http modülü
const http = require("http");
const body = JSON.stringify({
payload: "a502000400000000000000000000ef00a5020000000000000000000000e100"
});
const options = {
hostname: "192.168.7.1",
port: 80,
path: "/api/core_payload",
method: "POST",
headers: {
"Authorization": "Basic " + Buffer.from("KULLANICI_ADI:SIFRE").toString("base64"),
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(body)
}
};
const req = http.request(options, (res) => {
console.log(`Status: ${res.statusCode}`);
});
req.write(body);
req.end();
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]string{
"payload": "a502000400000000000000000000ef00a5020000000000000000000000e100",
})
req, _ := http.NewRequest("POST", "http://192.168.7.1/api/core_payload", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
req.SetBasicAuth("KULLANICI_ADI", "SIFRE")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.StatusCode)
}
Yanıt Kodları
| Kod | Anlam |
|---|---|
200 | İstek kabul edildi |
401 | Kimlik bilgisi eksik veya hatalı |
404 | Endpoint adresi yanlış |
200 yanıtı, HTTP isteğinin kabul edildiğini gösterir. Her paketin geçerli olup olmadığı ayrıca denetlenir; geçersiz paketler çalıştırılmaz ancak bu durum HTTP yanıt kodunu etkilemez.
Kimlik Bilgilerinizi Test Etmek
Paket üretmeden önce kimlik bilgilerinizin doğru çalıştığını doğrulamak isterseniz sıfır uzunluklu bir payload gönderin:
curl -s -o /dev/null -w "%{http_code}" \
-X POST http://192.168.7.1/api/core_payload \
-u "KULLANICI_ADI:SIFRE" \
-H "Content-Type: application/json" \
-d '{"payload": ""}'
200 dönüyorsa kimlik bilgileri geçerlidir.
Güvenlik Notları
USB modunda (normal mod): API 192.168.7.1 adresinden, USB bağlantısı aktifken erişilebilir. Bu adres cihazın fiziksel olarak bağlı olduğu bilgisayardan ulaşılabilirdir.
Sessiz modda (Wi-Fi AP): Cihaz aynı adreste Wi-Fi erişim noktası üzerinden yayın yapar. Bu durumda aynı AP’ye bağlanan herhangi bir cihaz API’ye erişebilir. Sessiz mod kullanıyorsanız güçlü bir şifre belirleyin.
Şifre iletimi: HTTP Basic Auth bilgileri base64 formatında gönderir; bu bir şifreleme değil, yalnızca kodlamadır. Güvenilmeyen ağlarda kullanmaktan kaçının.