💡 چرا 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=jsonp
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 = @import("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});
}

C

// gcc main.c -lcurl
#include <stdio.h>
#include <curl/curl.h>

int main(void) {
    CURL *curl = curl_easy_init();

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://ipify.ir");
        printf("IP address is: ");
        curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    return 0;
}

C++

// g++ main.cpp -lcurl
#include <iostream>
#include <string>
#include <curl/curl.h>

size_t write_body(char *data, size_t size, size_t nmemb, std::string *out) {
    out->append(data, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL *curl = curl_easy_init();
    std::string ip;

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://ipify.ir");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_body);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ip);
        curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

    std::cout << "IP address is: " << ip << std::endl;
    return 0;
}

PHP

<?php

$ip = file_get_contents('https://ipify.ir');
echo "IP address is: $ip";

TypeScript

const response = await fetch("https://ipify.ir?format=json");
const { ip } = (await response.json()) as { ip: string };

console.log(`IP address is: ${ip}`);

Kotlin

import java.net.URL

fun main() {
    val ip = URL("https://ipify.ir").readText()
    println("IP address is: $ip")
}

Objective-C

#import <Foundation/Foundation.h>

int main() {
    @autoreleasepool {
        NSURL *url = [NSURL URLWithString:@"https://ipify.ir"];
        NSString *ip = [NSString stringWithContentsOfURL:url
                                                encoding:NSUTF8StringEncoding
                                                   error:nil];
        NSLog(@"IP address is: %@", ip);
    }

    return 0;
}

Dart

// dart pub add http
import 'package:http/http.dart' as http;

void main() async {
  final response = await http.get(Uri.parse('https://ipify.ir'));
  print('IP address is: ${response.body}');
}

Scala

import scala.io.Source

object Main extends App {
  val ip = Source.fromURL("https://ipify.ir").mkString
  println(s"IP address is: $ip")
}

Groovy

def ip = new URL('https://ipify.ir').text

println "IP address is: $ip"

D

import std.stdio;
import std.net.curl;

void main() {
    auto ip = get("https://ipify.ir");
    writeln("IP address is: ", ip);
}

V

import net.http

fn main() {
    resp := http.get('https://ipify.ir') or { panic(err) }
    println('IP address is: ${resp.body}')
}

Crystal

require "http/client"

ip = HTTP::Client.get("https://ipify.ir").body
puts "IP address is: #{ip}"

Nim

import std/httpclient

let client = newHttpClient()
echo "IP address is: ", client.getContent("https://ipify.ir")

Haskell

-- cabal install http-conduit
import Network.HTTP.Simple
import qualified Data.ByteString.Char8 as B

main :: IO ()
main = do
    response <- httpBS "https://ipify.ir"
    B.putStrLn ("IP address is: " <> getResponseBody response)

Erlang

inets:start(),
ssl:start(),
{ok, {_, _, Ip}} = httpc:request("https://ipify.ir"),
io:format("IP address is: ~s~n", [Ip]).

Clojure

(println "IP address is:" (slurp "https://ipify.ir"))

OCaml

(* opam install ocurl *)
let () =
  let buffer = Buffer.create 32 in
  let conn = Curl.init () in
  Curl.set_url conn "https://ipify.ir";
  Curl.set_writefunction conn (fun s -> Buffer.add_string buffer s; String.length s);
  Curl.perform conn;
  Curl.cleanup conn;
  print_endline ("IP address is: " ^ Buffer.contents buffer)

F#

open System.Net.Http

let client = new HttpClient()
let ip = client.GetStringAsync("https://ipify.ir") |> Async.AwaitTask |> Async.RunSynchronously

printfn "IP address is: %s" ip

R

ip <- readLines("https://ipify.ir", warn = FALSE)

cat("IP address is:", ip, "\n")

Julia

using Downloads

ip = String(take!(Downloads.download("https://ipify.ir", IOBuffer())))
println("IP address is: $ip")

MATLAB

ip = webread('https://ipify.ir');

fprintf('IP address is: %s\n', ip);

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

آدرس IP چیست؟

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

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

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

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

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