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 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
@@ -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,5 @@
1
+ """ipjudge — IP 出口检测(住宅 / 机房 / 代理 + 平台可用性)。
2
+
3
+ 数据来自 https://ipjudge.org 的公开 API,免费、无需 key。
4
+ """
5
+ __version__ = "0.1.0"
@@ -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,9 @@
1
+ README.md
2
+ pyproject.toml
3
+ ipjudge/__init__.py
4
+ ipjudge/cli.py
5
+ ipjudge.egg-info/PKG-INFO
6
+ ipjudge.egg-info/SOURCES.txt
7
+ ipjudge.egg-info/dependency_links.txt
8
+ ipjudge.egg-info/entry_points.txt
9
+ ipjudge.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ipjudge = ipjudge.cli:main
@@ -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"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+