💡 چرا ipify را انتخاب کنیم؟

سادگی و سرعت

ipify سریع‌ترین و ساده‌ترین راه برای دریافت آدرس IP عمومی شماست. بدون نیاز به کلید API یا ثبت‌نام.

رایگان برای همیشه

این سرویس کاملاً رایگان است و برای استفاده‌های فردی و تجاری در مقیاس بزرگ قابل استفاده می‌باشد.

بدون محدودیت نرخ

بر خلاف بسیاری از سرویس‌ها، ما محدودیت سخت‌گیرانه‌ای برای تعداد درخواست‌ها نداریم و برای استفاده‌های زیاد مناسبیم.

🛠️ نحوه استفاده

دریافت IPv4 به صورت متن خام

$ curl ipify.ir
5.112.98.253

دریافت IPv6

$ curl -6 ipify.ir
2a07:3903:1:3::26e

دریافت به صورت JSON

$ curl ipify.ir?format=json
{"ip":"5.112.98.253"}

دریافت به صورت JSONP

$ curl ipify.ir?format=json
callback({"ip":"5.112.98.253"});

$ curl ipify.ir?format=jsonp&callback=getip
getip({"ip":"5.112.98.253"});

🛠️ زبان های برنامه نویسی

Bash

#!/bin/bash

ip=$(curl -s https://ipify.ir)
echo "IP address is: $ip"

Python

# pip install requests
from requests import get

ip = get('https://ipify.ir').text
print('IP address is: {}'.format(ip))

GO

package main

import (
        "io/ioutil"
        "net/http"
        "os"
)

func main() {
        res, _ := http.Get("https://ipify.ir")
        ip, _ := ioutil.ReadAll(res.Body)
        os.Stdout.Write(ip)
}

Javascript

<script type="application/javascript">
  function getIP(json) {
    document.write("IP address is: ", json.ip);
  }
</script>

<script type="application/javascript" src="https://ipify.ir?format=jsonp&callback=getIP"></script>

Node.JS

var http = require('http');

http.get({'host': 'ipify.ir', 'port': 80, 'path': '/'}, function(resp) {
  resp.on('data', function(ip) {
    console.log("IP address is: " + ip);
  });
});

jQuery

<script type="application/javascript">
  $(function() {
    $.getJSON("https://ipify.ir?format=jsonp&callback=?",
      function(json) {
        document.write("IP address is: ", json.ip);
      }
    );
  });
</script>

C#

using System;
using System.Net;

namespace Ipify.Examples {
    class Program {
        public static void Main (string[] args) {
            WebClient webClient = new WebClient();
            string publicIp = webClient.DownloadString("https://ipify.ir");
            Console.WriteLine("IP address is: {0}", publicIp);
        }
    }
}

Ruby

require "net/http"

ip = Net::HTTP.get(URI("https://ipify.ir"))
puts "IP address is: " + ip

Perl

use strict;
use warnings;
use LWP::UserAgent;

my $ua = new LWP::UserAgent();
my $ip = $ua->get('https://ipify.ir')->content;
print 'IP address is: '. $ip;

Java

try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://ipify.ir").openStream(), "UTF-8").useDelimiter("\A")) {
    System.out.println("My current IP address is " + s.next());
} catch (java.io.IOException e) {
    e.printStackTrace();
}

Elixir

:inets.start
{:ok, {_, _, inet_addr}} = :httpc.request('http://ipify.ir')
:inets.stop

PowerShell

$ip = Invoke-RestMethod -Uri 'https://ipify.ir?format=json'
"IP address is: $($ip.ip)"

Lua

socket_http = require "http.compat.socket"
body = assert(socket_http.request("https://ipify.ir"))
print(body)

Swift

import Foundation

let url = URL(string: "https://ipify.ir")

do {
    if let url = url {
        let ipAddress = try String(contentsOf: url)
        print("IP address is: " + ipAddress)
    }
} catch let error {
    print(error)
}

Arduino

if (client.connect("ipify.ir", 80)) {
    Serial.println("connected");
    client.println("GET / HTTP/1.0");
    client.println("Host: ipify.ir");
    client.println();
} else {
    Serial.println("connection failed");
}

Rust

// cargo add reqwest --features blocking
use reqwest::blocking::get;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let ip = get("https://ipify.ir")?.text()?;
    println!("IP address is: {}", ip);
    Ok(())
}

Zig

const std = ("std");
const http = std.http;

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    var client = http.Client{ .allocator = allocator };
    defer client.deinit();

    const uri = try std.Uri.parse("https://ipify.ir");
    var req = try client.open(.GET, uri, .{
        .server_header_buffer = try allocator.alloc(u8, 4096),
    });
    defer req.deinit();

    try req.send();
    try req.finish();
    try req.wait();

    var body = std.ArrayList(u8).init(allocator);
    defer body.deinit();
    try req.reader().readAllArrayList(&body, 1024);

    std.debug.print("IP address is: {s}", .{body.items});
}

❓ سؤالات متداول

آدرس IP چیست؟

آدرس IP (Internet Protocol) یک شناسه عددی منحصر به فرد است که به هر دستگاه متصل به اینترنت اختصاص داده می‌شود. این آدرس برای شناسایی و ارتباط بین دستگاه‌ها در شبکه استفاده می‌شود.

تفاوت IPv4 و IPv6 چیست؟

IPv4 از آدرس‌های 32 بیتی (مانند 192.168.1.1) استفاده می‌کند، در حالی که IPv6 از آدرس‌های 128 بیتی (مانند 2001:0db8:85a3::8a2e:0370:7334) استفاده می‌کند. IPv6 برای حل مشکل کمبود آدرس‌های IPv4 طراحی شده است.

آیا استفاده از ipify رایگان است؟

بله، ipify کاملاً رایگان است و هیچ محدودیتی برای تعداد درخواست‌ها ندارد. می‌توانید در پروژه‌های شخصی یا تجاری خود از آن استفاده کنید.