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

AlanDeğer
Kullanıcı adıKutudan çıkan giriş bilgileri kartındaki kullanıcı adı
ŞifreKutudan çı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.

ÖrnekDurum
123Geçerli
macrostick-2026Geçerli
abGeçersiz (3 karakterden kısa)
bu-sifre-cok-uzun-olurGeç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ı

KodAnlam
200İstek kabul edildi
401Kimlik bilgisi eksik veya hatalı
404Endpoint 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.

Bu sayfa yardımcı oldu mu?