💡 چرا 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 کاملاً رایگان است و هیچ محدودیتی برای تعداد درخواستها ندارد. میتوانید در پروژههای شخصی یا تجاری خود از آن استفاده کنید.