Kendi SMM Servisinizi Nasıl Oluşturursunuz? | SMM Panel Yapısını Öğrenmek #1

Roichue

Asistan Moderatör
31 Mar 2022
1,292
826
Millî İstihbarat Teşkilatı
SMM API Yapısı | Kendi SMM Servisinizi Nasıl Oluşturursunuz?

Merhabalar,

Şu an bir çok kişi kendi smm servisini oluşturmak istiyor. Özellikle otomasyon yazılımlarına merakı olan yazılımcıların kesinlikle girmesi gereken bir sektördür.
Neden? Parası tatlı.

Bu yazı bu işler hakkında çok başlangıç - temel bir bilgi sağlayacaktır. İlgi görürse takipçi yazılımı nasıl yapılır buna kadar gidicektir.
Ufak temel bilgilerle başlayalım şimdilik.


Bu İşin Ufak Bir Özeti

Elbette bu iş zor olmaktadır çünkü sosyal medya platformları bildiğinizi gibi güncel olmaktadır. Bir takipçi yazılımı yaptığımız zaman bir bakmışız 2 gün sonra fixlenmiş ve emekleriniz çöp oluyor diyebiliriz. Bu yüzden siz, siz olun Instagram gibi platformlar yerine bu işe yeni başlıyorsanız daha az güncelleme alan keşfedilmemiş platformlara hizmet verin.

SMM Servisleri Nasıl Yapılır?


Öncelikle SMM servislerini kodlamadan önce SMM Panellerin yapısına bakmamız gerekmekte.
Piyasa üzerinde bir çok smm panel scripti mevcuttur fakat en popülerleri:

1. Perfect Panel
2. Glycon V2 Script
3. Sweet Panel
4. Fast Panel Script


2bWoAXtnij.gif


> Bu 2 script üzerinden örnek verelim. İkiside PHP ile kodlanmıştır.
SMM Servisi yaparken ya bir script kullanarak direk site - sunucu paslasması yaparak smm panellerle uygun bir şekilde hizmet verebilirsiniz.

Dilersenizde 0'dan bir sunucu üzerinde örnek olarak NODE.JS ile bir yapı oluşturabilirsiniz. Sadece belirli servisleriniz olucaksa sizin için sadece bir API yapısı oluşturmak yeterli olur.
Fakat bir SMM Panel scripti üzerinden geliştirme yapmak sizin için daha uygun olucaktır. Direkmen API verebilirsiniz ve her şey hazır olur.

2bWoAXtnij.gif


Örnek: 2002 nolu servise gelen siparişleri kendi sunucunuza istek olarak yöneltirsiniz ve kendi yazılımınız bu durumda tetiklenir.
Bu durumda ufak bir PHP düzenlenmesi yeterli olucaktır.


ÖRNEKLERLE ANLATIMLAR

1. SİPARİŞ DURUMLARI:

JavaScript:
const hizmetID = "SERVİS NO"
        const kullaniciAdi = "SİPARİŞ KULLANICI ADI"
        const miktar = "KAÇ ADET TAKİPÇİ"

        const API_KEY = 'SMM PANEL API KEY';
const SMM_PANEL = 'roicmedya.com';

        const SERVICE_ID = hizmetID;
        const USERNAME = kullaniciAdi;
        const QUANTITY = miktar;
        
        const url = `https://${SMM_PANEL}/api/v2`;
        
        const data = {
            key: API_KEY,
            action: 'add',
            service: SERVICE_ID,
            link: `https://www.instagram.com/${USERNAME}`,
            quantity: QUANTITY,
        }
        
        const config = {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }
        
        await axios.post(url, new URLSearchParams(data), config)
            .then(response => {
                console.log(response.data);
            })
            .catch(error => {
                console.error(error);
            });       
        }
    }

Örnek olarak burda, bir smm panele istek yolluyoruz. Bu kod belirttiğimiz servis numarasından bir sipariş vermemizi sağlar.
Siparişi oluşturur ve smm panel bunu kabul eder. O smm panelde kendi apisine böyle bir istek yollar, domino etkisinde gider böyle.

2bWoAXtnij.gif


Tabi ki ana sağlayıcı burda olaya dur diyor. Bu istek en sonunda ana sağlayıcıya geldiği zaman o başka apiye yollamak yerine kendi sunucusuna bir istek yolluyor.
Örnek > #65462346

Benzersiz bir sipariş kimliği oluşturuldu. Artık bu sipariş beklemede.
Ufak bir örnekle konuyu özetleyelim.


JavaScript:
app.get('/kontrol', async (req, res) => {

      const kontrolURL = req.query.link
  });

2bWoAXtnij.gif


>> KontrolURL üzerindeki veriyi bir kullanıcı adı olarak düşün.
Örnek: turkhackteam adında ki bir instagram kullanıcısı. instagram.com/${kontrolURL} bu sayfaya gidip takipçi sayısını çektikten sonra bizden api çeken panele geri başlangıç sayısı gönderebiliriz.

>> Şunu Unutmayın: Eğer smm panel scripti üzerinden değil de, kendiniz özel bir yapı oluşturduysanız API keyleri kontrol ettirmeli ve özel bir bakiye sistemine geçiş yapmalısınız. Bu kısımlarda falan ekstra özelleştirmeler yapmanız gerekir. (SMM Panel Entegresi için)


const baslangic = '4'
res.json({ result: baslangic });

{ "start_count": `${start_count}` }


Gördüğünüz gibi yanıt verdik. Bunlar çok basit örnekler tabi ki.
Sipariş isteği geldiğinde sıra sistemi oluşturmalısınız yoksa çökmelerden ve düzensizlikten kaçamazsınız.

Gerisi aslında sizin yeteneklerinize kalmakta size kısa bir şekilde yapıyı anlatmaya çalışıyorum.

2bWoAXtnij.gif


Örnek olarak userler.txt dosyanız var teker teker userler.txt dosyasındaki hesaplara girip üstteki kontrolURL'si üzerindeki kullanıcıyı takip eden bir sistem yazdınız. 10 adet sipariş mevcuttu ve 10 adet sipariş tamamlandı.

SMM Panele status verisini Completed olarak gördüğünde o sipariş tamamlanır.

{ "status": "Completed" }

Biz sunucu tarafında yani siparişi aldığımız zaman, sunucumuza yollandığı zaman:

Takipçi gönderirken yazılımımız yükleniyor modunda yani { "status": "In progress" },

const kalansayi = "44"

{ "remains": `${kalansayi}` }


Her 5 dakikada bir yanıt gönderip kalan miktarı güncelleyebilirsiniz.


PHP API YAPI ÖRNEĞİ


PHP:
<?php
class Api
{
    /** API URL */
    public $api_url = 'https://roicmedya.com/api/v2';

    /** Your API key */
    public $api_key = '';

    /** Add order */
    public function order($data)
    {
        $post = array_merge(['key' => $this->api_key, 'action' => 'add'], $data);
        return json_decode($this->connect($post));
    }

    /** Get order status  */
    public function status($order_id)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'order' => $order_id
            ])
        );
    }

    /** Get orders status */
    public function multiStatus($order_ids)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'orders' => implode(",", (array)$order_ids)
            ])
        );
    }

    /** Get services */
    public function services()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'services',
            ])
        );
    }

    /** Refill order */
    public function refill(int $orderId)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'order' => $orderId,
            ])
        );
    }

    /** Refill orders */
    public function multiRefill(array $orderIds)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'orders' => implode(',', $orderIds),
            ]),
            true,
        );
    }

    /** Get refill status */
    public function refillStatus(int $refillId)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refill' => $refillId,
            ])
        );
    }

    /** Get refill statuses */
    public function multiRefillStatus(array $refillIds)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refills' => implode(',', $refillIds),
            ]),
            true,
        );
    }

    /** Get balance */
    public function balance()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'balance',
            ])
        );
    }

    private function connect($post)
    {
        $_post = [];
        if (is_array($post)) {
            foreach ($post as $name => $value) {
                $_post[] = $name . '=' . urlencode($value);
            }
        }

        $ch = curl_init($this->api_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        if (is_array($post)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $_post));
        }
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        $result = curl_exec($ch);
        if (curl_errno($ch) != 0 && empty($result)) {
            $result = false;
        }
        curl_close($ch);
        return $result;
    }
}

// Examples

$api = new Api();

$services = $api->services(); # Return all services

$balance = $api->balance(); # Return user balance

// Add order

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 2, 'interval' => 5]); # Default

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'comments' => "good ***\ngreat photo\n:)\n;)"]); # Custom Comments

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test']); # Package

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 10, 'interval' => 60]); # Drip-feed

// Old posts only
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'posts' => 0, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

// Unlimited new posts and 5 old posts
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'old_posts' => 5, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'username' => "test"]); # Comment Likes

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'answer_number' => '7']); # Poll


$status = $api->status($order->order); # Return status, charge, remains, start count, currency

$statuses = $api->multiStatus([1, 2, 3]); # Return orders status, charge, remains, start count, currency
$refill = (array) $api->multiRefill([1, 2]);
$refillIds = array_column($refill, 'refill');
if ($refillIds) {
    $refillStatuses = $api->multiRefillStatus($refillIds);
}

SMM PANELLERİN API DÖKÜMANI: API
(Tamamen anlamak için inceleyiniz)

2bWoAXtnij.gif


Hayırlı forumlar.
Aklınıza takılan sorular olursa sorabilirsiniz.
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,547
1,148
Anıtkabir
SMM API Yapısı | Kendi SMM Servisinizi Nasıl Oluşturursunuz?

Merhabalar,

Şu an bir çok kişi kendi smm servisini oluşturmak istiyor. Özellikle otomasyon yazılımlarına merakı olan yazılımcıların kesinlikle girmesi gereken bir sektördür.
Neden? Parası tatlı.

Bu yazı bu işler hakkında çok başlangıç - temel bir bilgi sağlayacaktır. İlgi görürse takipçi yazılımı nasıl yapılır buna kadar gidicektir.
Ufak temel bilgilerle başlayalım şimdilik.


Bu İşin Ufak Bir Özeti

Elbette bu iş zor olmaktadır çünkü sosyal medya platformları bildiğinizi gibi güncel olmaktadır. Bir takipçi yazılımı yaptığımız zaman bir bakmışız 2 gün sonra fixlenmiş ve emekleriniz çöp oluyor diyebiliriz. Bu yüzden siz, siz olun Instagram gibi platformlar yerine bu işe yeni başlıyorsanız daha az güncelleme alan keşfedilmemiş platformlara hizmet verin.

SMM Servisleri Nasıl Yapılır?


Öncelikle SMM servislerini kodlamadan önce SMM Panellerin yapısına bakmamız gerekmekte.
Piyasa üzerinde bir çok smm panel scripti mevcuttur fakat en popülerleri:

1. Perfect Panel
2. Glycon V2 Script
3. Sweet Panel
4. Fast Panel Script


2bWoAXtnij.gif


> Bu 2 script üzerinden örnek verelim. İkiside PHP ile kodlanmıştır.
SMM Servisi yaparken ya bir script kullanarak direk site - sunucu paslasması yaparak smm panellerle uygun bir şekilde hizmet verebilirsiniz.

Dilersenizde 0'dan bir sunucu üzerinde örnek olarak NODE.JS ile bir yapı oluşturabilirsiniz. Sadece belirli servisleriniz olucaksa sizin için sadece bir API yapısı oluşturmak yeterli olur.
Fakat bir SMM Panel scripti üzerinden geliştirme yapmak sizin için daha uygun olucaktır. Direkmen API verebilirsiniz ve her şey hazır olur.

2bWoAXtnij.gif


Örnek: 2002 nolu servise gelen siparişleri kendi sunucunuza istek olarak yöneltirsiniz ve kendi yazılımınız bu durumda tetiklenir.
Bu durumda ufak bir PHP düzenlenmesi yeterli olucaktır.


ÖRNEKLERLE ANLATIMLAR

1. SİPARİŞ DURUMLARI:

JavaScript:
const hizmetID = "SERVİS NO"
        const kullaniciAdi = "SİPARİŞ KULLANICI ADI"
        const miktar = "KAÇ ADET TAKİPÇİ"

        const API_KEY = 'SMM PANEL API KEY';
const SMM_PANEL = 'roicmedya.com';

        const SERVICE_ID = hizmetID;
        const USERNAME = kullaniciAdi;
        const QUANTITY = miktar;
       
        const url = `https://${SMM_PANEL}/api/v2`;
       
        const data = {
            key: API_KEY,
            action: 'add',
            service: SERVICE_ID,
            link: `https://www.instagram.com/${USERNAME}`,
            quantity: QUANTITY,
        }
       
        const config = {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }
       
        await axios.post(url, new URLSearchParams(data), config)
            .then(response => {
                console.log(response.data);
            })
            .catch(error => {
                console.error(error);
            });      
        }
    }

Örnek olarak burda, bir smm panele istek yolluyoruz. Bu kod belirttiğimiz servis numarasından bir sipariş vermemizi sağlar.
Siparişi oluşturur ve smm panel bunu kabul eder. O smm panelde kendi apisine böyle bir istek yollar, domino etkisinde gider böyle.

2bWoAXtnij.gif


Tabi ki ana sağlayıcı burda olaya dur diyor. Bu istek en sonunda ana sağlayıcıya geldiği zaman o başka apiye yollamak yerine kendi sunucusuna bir istek yolluyor.
Örnek > #65462346

Benzersiz bir sipariş kimliği oluşturuldu. Artık bu sipariş beklemede.
Ufak bir örnekle konuyu özetleyelim.


JavaScript:
app.get('/kontrol', async (req, res) => {

      const kontrolURL = req.query.link
  });

2bWoAXtnij.gif


>> KontrolURL üzerindeki veriyi bir kullanıcı adı olarak düşün.
Örnek: turkhackteam adında ki bir instagram kullanıcısı. instagram.com/${kontrolURL} bu sayfaya gidip takipçi sayısını çektikten sonra bizden api çeken panele geri başlangıç sayısı gönderebiliriz.

>> Şunu Unutmayın: Eğer smm panel scripti üzerinden değil de, kendiniz özel bir yapı oluşturduysanız API keyleri kontrol ettirmeli ve özel bir bakiye sistemine geçiş yapmalısınız. Bu kısımlarda falan ekstra özelleştirmeler yapmanız gerekir. (SMM Panel Entegresi için)


const baslangic = '4'
res.json({ result: baslangic });

{ "start_count": `${start_count}` }


Gördüğünüz gibi yanıt verdik. Bunlar çok basit örnekler tabi ki.
Sipariş isteği geldiğinde sıra sistemi oluşturmalısınız yoksa çökmelerden ve düzensizlikten kaçamazsınız.

Gerisi aslında sizin yeteneklerinize kalmakta size kısa bir şekilde yapıyı anlatmaya çalışıyorum.

2bWoAXtnij.gif


Örnek olarak userler.txt dosyanız var teker teker userler.txt dosyasındaki hesaplara girip üstteki kontrolURL'si üzerindeki kullanıcıyı takip eden bir sistem yazdınız. 10 adet sipariş mevcuttu ve 10 adet sipariş tamamlandı.

SMM Panele status verisini Completed olarak gördüğünde o sipariş tamamlanır.

{ "status": "Completed" }

Biz sunucu tarafında yani siparişi aldığımız zaman, sunucumuza yollandığı zaman:

Takipçi gönderirken yazılımımız yükleniyor modunda yani { "status": "In progress" },

const kalansayi = "44"

{ "remains": `${kalansayi}` }


Her 5 dakikada bir yanıt gönderip kalan miktarı güncelleyebilirsiniz.


PHP API YAPI ÖRNEĞİ


PHP:
<?php
class Api
{
    /** API URL */
    public $api_url = 'https://roicmedya.com/api/v2';

    /** Your API key */
    public $api_key = '';

    /** Add order */
    public function order($data)
    {
        $post = array_merge(['key' => $this->api_key, 'action' => 'add'], $data);
        return json_decode($this->connect($post));
    }

    /** Get order status  */
    public function status($order_id)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'order' => $order_id
            ])
        );
    }

    /** Get orders status */
    public function multiStatus($order_ids)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'orders' => implode(",", (array)$order_ids)
            ])
        );
    }

    /** Get services */
    public function services()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'services',
            ])
        );
    }

    /** Refill order */
    public function refill(int $orderId)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'order' => $orderId,
            ])
        );
    }

    /** Refill orders */
    public function multiRefill(array $orderIds)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'orders' => implode(',', $orderIds),
            ]),
            true,
        );
    }

    /** Get refill status */
    public function refillStatus(int $refillId)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refill' => $refillId,
            ])
        );
    }

    /** Get refill statuses */
    public function multiRefillStatus(array $refillIds)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refills' => implode(',', $refillIds),
            ]),
            true,
        );
    }

    /** Get balance */
    public function balance()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'balance',
            ])
        );
    }

    private function connect($post)
    {
        $_post = [];
        if (is_array($post)) {
            foreach ($post as $name => $value) {
                $_post[] = $name . '=' . urlencode($value);
            }
        }

        $ch = curl_init($this->api_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        if (is_array($post)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $_post));
        }
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        $result = curl_exec($ch);
        if (curl_errno($ch) != 0 && empty($result)) {
            $result = false;
        }
        curl_close($ch);
        return $result;
    }
}

// Examples

$api = new Api();

$services = $api->services(); # Return all services

$balance = $api->balance(); # Return user balance

// Add order

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 2, 'interval' => 5]); # Default

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'comments' => "good ***\ngreat photo\n:)\n;)"]); # Custom Comments

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test']); # Package

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 10, 'interval' => 60]); # Drip-feed

// Old posts only
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'posts' => 0, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

// Unlimited new posts and 5 old posts
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'old_posts' => 5, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'username' => "test"]); # Comment Likes

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'answer_number' => '7']); # Poll


$status = $api->status($order->order); # Return status, charge, remains, start count, currency

$statuses = $api->multiStatus([1, 2, 3]); # Return orders status, charge, remains, start count, currency
$refill = (array) $api->multiRefill([1, 2]);
$refillIds = array_column($refill, 'refill');
if ($refillIds) {
    $refillStatuses = $api->multiRefillStatus($refillIds);
}

SMM PANELLERİN API DÖKÜMANI: API
(Tamamen anlamak için inceleyiniz)

2bWoAXtnij.gif


Hayırlı forumlar.
Aklınıza takılan sorular olursa sorabilirsiniz.
Çok güzel konu olmuş gerçek lazımdı böyle bişi
 

Saga_1268

Yeni üye
23 Eyl 2023
28
10
SMM API Yapısı | Kendi SMM Servisinizi Nasıl Oluşturursunuz?

Merhabalar,

Şu an bir çok kişi kendi smm servisini oluşturmak istiyor. Özellikle otomasyon yazılımlarına merakı olan yazılımcıların kesinlikle girmesi gereken bir sektördür.
Neden? Parası tatlı.

Bu yazı bu işler hakkında çok başlangıç - temel bir bilgi sağlayacaktır. İlgi görürse takipçi yazılımı nasıl yapılır buna kadar gidicektir.
Ufak temel bilgilerle başlayalım şimdilik.


Bu İşin Ufak Bir Özeti

Elbette bu iş zor olmaktadır çünkü sosyal medya platformları bildiğinizi gibi güncel olmaktadır. Bir takipçi yazılımı yaptığımız zaman bir bakmışız 2 gün sonra fixlenmiş ve emekleriniz çöp oluyor diyebiliriz. Bu yüzden siz, siz olun Instagram gibi platformlar yerine bu işe yeni başlıyorsanız daha az güncelleme alan keşfedilmemiş platformlara hizmet verin.

SMM Servisleri Nasıl Yapılır?


Öncelikle SMM servislerini kodlamadan önce SMM Panellerin yapısına bakmamız gerekmekte.
Piyasa üzerinde bir çok smm panel scripti mevcuttur fakat en popülerleri:

1. Perfect Panel
2. Glycon V2 Script
3. Sweet Panel
4. Fast Panel Script


2bWoAXtnij.gif


> Bu 2 script üzerinden örnek verelim. İkiside PHP ile kodlanmıştır.
SMM Servisi yaparken ya bir script kullanarak direk site - sunucu paslasması yaparak smm panellerle uygun bir şekilde hizmet verebilirsiniz.

Dilersenizde 0'dan bir sunucu üzerinde örnek olarak NODE.JS ile bir yapı oluşturabilirsiniz. Sadece belirli servisleriniz olucaksa sizin için sadece bir API yapısı oluşturmak yeterli olur.
Fakat bir SMM Panel scripti üzerinden geliştirme yapmak sizin için daha uygun olucaktır. Direkmen API verebilirsiniz ve her şey hazır olur.

2bWoAXtnij.gif


Örnek: 2002 nolu servise gelen siparişleri kendi sunucunuza istek olarak yöneltirsiniz ve kendi yazılımınız bu durumda tetiklenir.
Bu durumda ufak bir PHP düzenlenmesi yeterli olucaktır.


ÖRNEKLERLE ANLATIMLAR

1. SİPARİŞ DURUMLARI:

JavaScript:
const hizmetID = "SERVİS NO"
        const kullaniciAdi = "SİPARİŞ KULLANICI ADI"
        const miktar = "KAÇ ADET TAKİPÇİ"

        const API_KEY = 'SMM PANEL API KEY';
const SMM_PANEL = 'roicmedya.com';

        const SERVICE_ID = hizmetID;
        const USERNAME = kullaniciAdi;
        const QUANTITY = miktar;
       
        const url = `https://${SMM_PANEL}/api/v2`;
       
        const data = {
            key: API_KEY,
            action: 'add',
            service: SERVICE_ID,
            link: `https://www.instagram.com/${USERNAME}`,
            quantity: QUANTITY,
        }
       
        const config = {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }
       
        await axios.post(url, new URLSearchParams(data), config)
            .then(response => {
                console.log(response.data);
            })
            .catch(error => {
                console.error(error);
            });      
        }
    }

Örnek olarak burda, bir smm panele istek yolluyoruz. Bu kod belirttiğimiz servis numarasından bir sipariş vermemizi sağlar.
Siparişi oluşturur ve smm panel bunu kabul eder. O smm panelde kendi apisine böyle bir istek yollar, domino etkisinde gider böyle.

2bWoAXtnij.gif


Tabi ki ana sağlayıcı burda olaya dur diyor. Bu istek en sonunda ana sağlayıcıya geldiği zaman o başka apiye yollamak yerine kendi sunucusuna bir istek yolluyor.
Örnek > #65462346

Benzersiz bir sipariş kimliği oluşturuldu. Artık bu sipariş beklemede.
Ufak bir örnekle konuyu özetleyelim.


JavaScript:
app.get('/kontrol', async (req, res) => {

      const kontrolURL = req.query.link
  });

2bWoAXtnij.gif


>> KontrolURL üzerindeki veriyi bir kullanıcı adı olarak düşün.
Örnek: turkhackteam adında ki bir instagram kullanıcısı. instagram.com/${kontrolURL} bu sayfaya gidip takipçi sayısını çektikten sonra bizden api çeken panele geri başlangıç sayısı gönderebiliriz.

>> Şunu Unutmayın: Eğer smm panel scripti üzerinden değil de, kendiniz özel bir yapı oluşturduysanız API keyleri kontrol ettirmeli ve özel bir bakiye sistemine geçiş yapmalısınız. Bu kısımlarda falan ekstra özelleştirmeler yapmanız gerekir. (SMM Panel Entegresi için)


const baslangic = '4'
res.json({ result: baslangic });

{ "start_count": `${start_count}` }


Gördüğünüz gibi yanıt verdik. Bunlar çok basit örnekler tabi ki.
Sipariş isteği geldiğinde sıra sistemi oluşturmalısınız yoksa çökmelerden ve düzensizlikten kaçamazsınız.

Gerisi aslında sizin yeteneklerinize kalmakta size kısa bir şekilde yapıyı anlatmaya çalışıyorum.

2bWoAXtnij.gif


Örnek olarak userler.txt dosyanız var teker teker userler.txt dosyasındaki hesaplara girip üstteki kontrolURL'si üzerindeki kullanıcıyı takip eden bir sistem yazdınız. 10 adet sipariş mevcuttu ve 10 adet sipariş tamamlandı.

SMM Panele status verisini Completed olarak gördüğünde o sipariş tamamlanır.

{ "status": "Completed" }

Biz sunucu tarafında yani siparişi aldığımız zaman, sunucumuza yollandığı zaman:

Takipçi gönderirken yazılımımız yükleniyor modunda yani { "status": "In progress" },

const kalansayi = "44"

{ "remains": `${kalansayi}` }


Her 5 dakikada bir yanıt gönderip kalan miktarı güncelleyebilirsiniz.


PHP API YAPI ÖRNEĞİ


PHP:
<?php
class Api
{
    /** API URL */
    public $api_url = 'https://roicmedya.com/api/v2';

    /** Your API key */
    public $api_key = '';

    /** Add order */
    public function order($data)
    {
        $post = array_merge(['key' => $this->api_key, 'action' => 'add'], $data);
        return json_decode($this->connect($post));
    }

    /** Get order status  */
    public function status($order_id)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'order' => $order_id
            ])
        );
    }

    /** Get orders status */
    public function multiStatus($order_ids)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'status',
                'orders' => implode(",", (array)$order_ids)
            ])
        );
    }

    /** Get services */
    public function services()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'services',
            ])
        );
    }

    /** Refill order */
    public function refill(int $orderId)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'order' => $orderId,
            ])
        );
    }

    /** Refill orders */
    public function multiRefill(array $orderIds)
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'orders' => implode(',', $orderIds),
            ]),
            true,
        );
    }

    /** Get refill status */
    public function refillStatus(int $refillId)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refill' => $refillId,
            ])
        );
    }

    /** Get refill statuses */
    public function multiRefillStatus(array $refillIds)
    {
         return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'refills' => implode(',', $refillIds),
            ]),
            true,
        );
    }

    /** Get balance */
    public function balance()
    {
        return json_decode(
            $this->connect([
                'key' => $this->api_key,
                'action' => 'balance',
            ])
        );
    }

    private function connect($post)
    {
        $_post = [];
        if (is_array($post)) {
            foreach ($post as $name => $value) {
                $_post[] = $name . '=' . urlencode($value);
            }
        }

        $ch = curl_init($this->api_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        if (is_array($post)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $_post));
        }
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        $result = curl_exec($ch);
        if (curl_errno($ch) != 0 && empty($result)) {
            $result = false;
        }
        curl_close($ch);
        return $result;
    }
}

// Examples

$api = new Api();

$services = $api->services(); # Return all services

$balance = $api->balance(); # Return user balance

// Add order

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 2, 'interval' => 5]); # Default

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'comments' => "good ***\ngreat photo\n:)\n;)"]); # Custom Comments

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test']); # Package

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'runs' => 10, 'interval' => 60]); # Drip-feed

// Old posts only
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'posts' => 0, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

// Unlimited new posts and 5 old posts
$order = $api->order(['service' => 1, 'username' => 'username', 'min' => 100, 'max' => 110, 'old_posts' => 5, 'delay' => 30, 'expiry' => '11/11/2022']); # Subscriptions

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'username' => "test"]); # Comment Likes

$order = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100, 'answer_number' => '7']); # Poll


$status = $api->status($order->order); # Return status, charge, remains, start count, currency

$statuses = $api->multiStatus([1, 2, 3]); # Return orders status, charge, remains, start count, currency
$refill = (array) $api->multiRefill([1, 2]);
$refillIds = array_column($refill, 'refill');
if ($refillIds) {
    $refillStatuses = $api->multiRefillStatus($refillIds);
}

SMM PANELLERİN API DÖKÜMANI: API
(Tamamen anlamak için inceleyiniz)

2bWoAXtnij.gif


Hayırlı forumlar.
Aklınıza takılan sorular olursa sorabilirsiniz.
Verdiğin bilgiler için teşekkürler
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.