Skip to content

Commit 9c6bce7

Browse files
authored
Merge pull request #114 from upbit/add.bapi.dnsbackup
Add backup dns for require_appapi_hosts()
2 parents e718dfe + d8e1e2f commit 9c6bce7

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

demo.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ def appapi_illust(aapi):
3939
json_result = aapi.illust_comments(59580629)
4040
print(json_result)
4141

42-
json_result = aapi.ugoira_metadata(51815717)
43-
print(json_result)
44-
metadata = json_result.ugoira_metadata
45-
print(">>> frames=%d %s" % (len(metadata.frames), metadata.zip_urls.medium))
42+
# (2020/01/28) Comment because 51815717 is deleted
43+
# json_result = aapi.ugoira_metadata(51815717)
44+
# print(json_result)
45+
# metadata = json_result.ugoira_metadata
46+
# print(">>> frames=%d %s" % (len(metadata.frames), metadata.zip_urls.medium))
4647

4748

4849
def appapi_recommend(aapi):

pixivpy3/bapi.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,26 @@ def __init__(self, **requests_kwargs):
1515
session.mount('https://', host_header_ssl.HostHeaderSSLAdapter())
1616
self.requests = session
1717

18-
def require_appapi_hosts(self, hostname="app-api.pixiv.net"):
18+
def require_appapi_hosts(self, hostname="app-api.pixiv.net", timeout=3):
1919
"""
20-
通过1.0.0.1请求真实的ip地址
20+
通过cloudflare的 DNS over HTTPS 请求真实的ip地址
2121
"""
22-
url = "https://1.0.0.1/dns-query?ct=application/dns-json&name=%s&type=A&do=false&cd=false" % hostname
23-
response = requests.get(url)
22+
url = "https://1.0.0.1/dns-query" # 先使用1.0.0.1的地址
23+
params = {
24+
'ct': 'application/dns-json',
25+
'name': hostname,
26+
'type': 'A',
27+
'do': 'false',
28+
'cd': 'false',
29+
}
30+
31+
try:
32+
response = requests.get(url, params=params, timeout=timeout)
33+
except Exception:
34+
# 根据 #111 的反馈,部分地区无法访问1.0.0.1,此时尝试域名解析
35+
url = "https://cloudflare-dns.com/dns-query"
36+
response = requests.get(url, params=params, timeout=timeout)
37+
38+
# 返回第一个解析到的IP
2439
self.hosts = "https://" + response.json()['Answer'][0]['data']
40+
return self.hosts

0 commit comments

Comments
 (0)