ipjudge 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ipjudge-0.1.0/PKG-INFO +73 -0
- ipjudge-0.1.0/README.md +56 -0
- ipjudge-0.1.0/ipjudge/__init__.py +5 -0
- ipjudge-0.1.0/ipjudge/cli.py +42 -0
- ipjudge-0.1.0/ipjudge.egg-info/PKG-INFO +73 -0
- ipjudge-0.1.0/ipjudge.egg-info/SOURCES.txt +9 -0
- ipjudge-0.1.0/ipjudge.egg-info/dependency_links.txt +1 -0
- ipjudge-0.1.0/ipjudge.egg-info/entry_points.txt +2 -0
- ipjudge-0.1.0/ipjudge.egg-info/top_level.txt +1 -0
- ipjudge-0.1.0/pyproject.toml +28 -0
- ipjudge-0.1.0/setup.cfg +4 -0
ipjudge-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ipjudge
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Check whether an IP is residential, datacenter or proxy, and whether ChatGPT / Claude / Gemini / Muse support its region.
|
|
5
|
+
Author-email: IP Judge <hi@ipjudge.org>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://ipjudge.org
|
|
8
|
+
Project-URL: Documentation, https://ipjudge.org/tools/api/
|
|
9
|
+
Project-URL: Repository, https://github.com/ipjudge/ipjudge
|
|
10
|
+
Keywords: ip,residential-ip,datacenter,chatgpt,claude,gemini,muse,network
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Internet
|
|
14
|
+
Classifier: Topic :: System :: Networking
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# ipjudge
|
|
19
|
+
|
|
20
|
+
Check whether an IP is **residential, datacenter or proxy**, and whether
|
|
21
|
+
**ChatGPT / Claude / Gemini / Meta Muse** officially support its region — from the terminal.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install ipjudge
|
|
25
|
+
ipjudge 8.8.8.8
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
8.8.8.8 机房 IP score 75 (B) 美国
|
|
30
|
+
Muse bad 地区已开放,但机房 IP 注册 Muse 常被拒(进等候名单)
|
|
31
|
+
Claude warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
32
|
+
ChatGPT warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
33
|
+
Gemini warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
34
|
+
Gemini API good 地区在 Google 公布的 Gemini API / AI Studio 可用名单里(这份名单和网页版分开)
|
|
35
|
+
detail: https://ipjudge.org/ip/8.8.8.8
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## What it answers
|
|
39
|
+
|
|
40
|
+
- Is this IP **residential / ISP / mobile / datacenter / proxy**?
|
|
41
|
+
- Is it **native** to its country or announced elsewhere (broadcast)?
|
|
42
|
+
- Would **ChatGPT, Claude, Gemini or Muse** accept it — by official region list and IP type?
|
|
43
|
+
- A **purity score (0–100)** with the deductions listed.
|
|
44
|
+
|
|
45
|
+
Useful when you are about to sign up for an AI account, run an agent, or debug why
|
|
46
|
+
"the site opens but the account gets flagged".
|
|
47
|
+
|
|
48
|
+
## How it works
|
|
49
|
+
|
|
50
|
+
It calls the free public API at <https://ipjudge.org/api/ip/{ip}> — **no key required**,
|
|
51
|
+
no data stored about you. Same data source as the website. JSON only, one argument.
|
|
52
|
+
|
|
53
|
+
For bulk use, a key raises the quota: <https://ipjudge.org/tools/api/>
|
|
54
|
+
|
|
55
|
+
## MCP
|
|
56
|
+
|
|
57
|
+
If you are wiring this into an AI agent instead of a shell, the same checks are exposed as
|
|
58
|
+
an MCP server: `https://ipjudge.org/mcp` (Streamable HTTP, no auth for light use).
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
claude mcp add --transport http ipjudge https://ipjudge.org/mcp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Limits
|
|
65
|
+
|
|
66
|
+
- Rate limited per visitor (40 new lookups / 10 min without a key).
|
|
67
|
+
- Judgements follow each platform's **officially published** region lists; they are not a
|
|
68
|
+
guarantee that an account will or will not be flagged.
|
|
69
|
+
- Not affiliated with OpenAI, Anthropic, Google or Meta.
|
|
70
|
+
|
|
71
|
+
## License
|
|
72
|
+
|
|
73
|
+
MIT
|
ipjudge-0.1.0/README.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ipjudge
|
|
2
|
+
|
|
3
|
+
Check whether an IP is **residential, datacenter or proxy**, and whether
|
|
4
|
+
**ChatGPT / Claude / Gemini / Meta Muse** officially support its region — from the terminal.
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
pip install ipjudge
|
|
8
|
+
ipjudge 8.8.8.8
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
8.8.8.8 机房 IP score 75 (B) 美国
|
|
13
|
+
Muse bad 地区已开放,但机房 IP 注册 Muse 常被拒(进等候名单)
|
|
14
|
+
Claude warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
15
|
+
ChatGPT warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
16
|
+
Gemini warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
17
|
+
Gemini API good 地区在 Google 公布的 Gemini API / AI Studio 可用名单里(这份名单和网页版分开)
|
|
18
|
+
detail: https://ipjudge.org/ip/8.8.8.8
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## What it answers
|
|
22
|
+
|
|
23
|
+
- Is this IP **residential / ISP / mobile / datacenter / proxy**?
|
|
24
|
+
- Is it **native** to its country or announced elsewhere (broadcast)?
|
|
25
|
+
- Would **ChatGPT, Claude, Gemini or Muse** accept it — by official region list and IP type?
|
|
26
|
+
- A **purity score (0–100)** with the deductions listed.
|
|
27
|
+
|
|
28
|
+
Useful when you are about to sign up for an AI account, run an agent, or debug why
|
|
29
|
+
"the site opens but the account gets flagged".
|
|
30
|
+
|
|
31
|
+
## How it works
|
|
32
|
+
|
|
33
|
+
It calls the free public API at <https://ipjudge.org/api/ip/{ip}> — **no key required**,
|
|
34
|
+
no data stored about you. Same data source as the website. JSON only, one argument.
|
|
35
|
+
|
|
36
|
+
For bulk use, a key raises the quota: <https://ipjudge.org/tools/api/>
|
|
37
|
+
|
|
38
|
+
## MCP
|
|
39
|
+
|
|
40
|
+
If you are wiring this into an AI agent instead of a shell, the same checks are exposed as
|
|
41
|
+
an MCP server: `https://ipjudge.org/mcp` (Streamable HTTP, no auth for light use).
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
claude mcp add --transport http ipjudge https://ipjudge.org/mcp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Limits
|
|
48
|
+
|
|
49
|
+
- Rate limited per visitor (40 new lookups / 10 min without a key).
|
|
50
|
+
- Judgements follow each platform's **officially published** region lists; they are not a
|
|
51
|
+
guarantee that an account will or will not be flagged.
|
|
52
|
+
- Not affiliated with OpenAI, Anthropic, Google or Meta.
|
|
53
|
+
|
|
54
|
+
## License
|
|
55
|
+
|
|
56
|
+
MIT
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""命令行入口:ipjudge <ip>"""
|
|
2
|
+
import json
|
|
3
|
+
import sys
|
|
4
|
+
import urllib.error
|
|
5
|
+
import urllib.request
|
|
6
|
+
|
|
7
|
+
API = "https://ipjudge.org/api/ip/"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def lookup(ip: str) -> dict:
|
|
11
|
+
req = urllib.request.Request(API + ip, headers={"User-Agent": "ipjudge-cli/0.1"})
|
|
12
|
+
with urllib.request.urlopen(req, timeout=20) as r:
|
|
13
|
+
return json.load(r)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def main() -> int:
|
|
17
|
+
if len(sys.argv) != 2 or sys.argv[1] in ("-h", "--help"):
|
|
18
|
+
print("usage: ipjudge <ip>\n\nexample: ipjudge 8.8.8.8", file=sys.stderr)
|
|
19
|
+
return 2
|
|
20
|
+
ip = sys.argv[1]
|
|
21
|
+
try:
|
|
22
|
+
d = lookup(ip)
|
|
23
|
+
except urllib.error.HTTPError as e:
|
|
24
|
+
print(f"error: HTTP {e.code} for {ip}", file=sys.stderr)
|
|
25
|
+
return 1
|
|
26
|
+
except Exception as e: # noqa: BLE001
|
|
27
|
+
print(f"error: {type(e).__name__}: {e}", file=sys.stderr)
|
|
28
|
+
return 1
|
|
29
|
+
|
|
30
|
+
print(f"{d.get('ip')} {d.get('kind_label') or d.get('kind')} "
|
|
31
|
+
f"score {d.get('score')} ({d.get('grade')}) {d.get('country') or d.get('country_code')}")
|
|
32
|
+
if d.get("native") is not None:
|
|
33
|
+
print(f" native: {d.get('native')}")
|
|
34
|
+
for p in d.get("platforms") or []:
|
|
35
|
+
if isinstance(p, dict):
|
|
36
|
+
print(f" {str(p.get('name', '')):8} {p.get('level', '?')} {p.get('text', '')}".rstrip())
|
|
37
|
+
print(f" detail: https://ipjudge.org/ip/{d.get('ip')}")
|
|
38
|
+
return 0
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ipjudge
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Check whether an IP is residential, datacenter or proxy, and whether ChatGPT / Claude / Gemini / Muse support its region.
|
|
5
|
+
Author-email: IP Judge <hi@ipjudge.org>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://ipjudge.org
|
|
8
|
+
Project-URL: Documentation, https://ipjudge.org/tools/api/
|
|
9
|
+
Project-URL: Repository, https://github.com/ipjudge/ipjudge
|
|
10
|
+
Keywords: ip,residential-ip,datacenter,chatgpt,claude,gemini,muse,network
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Internet
|
|
14
|
+
Classifier: Topic :: System :: Networking
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# ipjudge
|
|
19
|
+
|
|
20
|
+
Check whether an IP is **residential, datacenter or proxy**, and whether
|
|
21
|
+
**ChatGPT / Claude / Gemini / Meta Muse** officially support its region — from the terminal.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install ipjudge
|
|
25
|
+
ipjudge 8.8.8.8
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
8.8.8.8 机房 IP score 75 (B) 美国
|
|
30
|
+
Muse bad 地区已开放,但机房 IP 注册 Muse 常被拒(进等候名单)
|
|
31
|
+
Claude warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
32
|
+
ChatGPT warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
33
|
+
Gemini warn 地区可用;机房 IP 能用,但更容易被要求验证、触发风控
|
|
34
|
+
Gemini API good 地区在 Google 公布的 Gemini API / AI Studio 可用名单里(这份名单和网页版分开)
|
|
35
|
+
detail: https://ipjudge.org/ip/8.8.8.8
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## What it answers
|
|
39
|
+
|
|
40
|
+
- Is this IP **residential / ISP / mobile / datacenter / proxy**?
|
|
41
|
+
- Is it **native** to its country or announced elsewhere (broadcast)?
|
|
42
|
+
- Would **ChatGPT, Claude, Gemini or Muse** accept it — by official region list and IP type?
|
|
43
|
+
- A **purity score (0–100)** with the deductions listed.
|
|
44
|
+
|
|
45
|
+
Useful when you are about to sign up for an AI account, run an agent, or debug why
|
|
46
|
+
"the site opens but the account gets flagged".
|
|
47
|
+
|
|
48
|
+
## How it works
|
|
49
|
+
|
|
50
|
+
It calls the free public API at <https://ipjudge.org/api/ip/{ip}> — **no key required**,
|
|
51
|
+
no data stored about you. Same data source as the website. JSON only, one argument.
|
|
52
|
+
|
|
53
|
+
For bulk use, a key raises the quota: <https://ipjudge.org/tools/api/>
|
|
54
|
+
|
|
55
|
+
## MCP
|
|
56
|
+
|
|
57
|
+
If you are wiring this into an AI agent instead of a shell, the same checks are exposed as
|
|
58
|
+
an MCP server: `https://ipjudge.org/mcp` (Streamable HTTP, no auth for light use).
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
claude mcp add --transport http ipjudge https://ipjudge.org/mcp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Limits
|
|
65
|
+
|
|
66
|
+
- Rate limited per visitor (40 new lookups / 10 min without a key).
|
|
67
|
+
- Judgements follow each platform's **officially published** region lists; they are not a
|
|
68
|
+
guarantee that an account will or will not be flagged.
|
|
69
|
+
- Not affiliated with OpenAI, Anthropic, Google or Meta.
|
|
70
|
+
|
|
71
|
+
## License
|
|
72
|
+
|
|
73
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ipjudge
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ipjudge"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Check whether an IP is residential, datacenter or proxy, and whether ChatGPT / Claude / Gemini / Muse support its region."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
authors = [{ name = "IP Judge", email = "hi@ipjudge.org" }]
|
|
13
|
+
keywords = ["ip", "residential-ip", "datacenter", "chatgpt", "claude", "gemini", "muse", "network"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
"Topic :: Internet",
|
|
18
|
+
"Topic :: System :: Networking",
|
|
19
|
+
]
|
|
20
|
+
dependencies = []
|
|
21
|
+
|
|
22
|
+
[project.urls]
|
|
23
|
+
Homepage = "https://ipjudge.org"
|
|
24
|
+
Documentation = "https://ipjudge.org/tools/api/"
|
|
25
|
+
Repository = "https://github.com/ipjudge/ipjudge"
|
|
26
|
+
|
|
27
|
+
[project.scripts]
|
|
28
|
+
ipjudge = "ipjudge.cli:main"
|
ipjudge-0.1.0/setup.cfg
ADDED