全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4000|回复: 11

《开源》 腾讯查北岸接口Workers版

[复制链接]
发表于 2023-6-10 02:33:12 | 显示全部楼层 |阅读模式
原贴https://hostloc.com/thread-1177912-1-1.html
php版太麻烦,不喜欢,贴出cf Workers 版,简短13行代码实现
代码:https://github.com/wo31400/Workers_check_domain

演示url如下https://check.592222.xyz/baidu.com
发表于 2023-6-10 16:33:43 | 显示全部楼层
huiyi 发表于 2023-6-10 11:09
要做处理的话是不是还得先分割字符串啊,再对相关位置转义


是的,外层有一个()包围着,里面是json格式,解析下json应该就好了,我参照他的写法写了个golang版本
  1. {"code":200,"data":{"isICP":1,"name":"北京百度网讯科技有限公司","number":"京ICP证030173号-1","url":"baidu.com"}}
复制代码
发表于 2023-6-10 11:02:30 | 显示全部楼层
大佬 你这个代码好像没对Unicode做处理,能加上嘛
发表于 2023-6-10 11:03:36 | 显示全部楼层
huiyi 发表于 2023-6-10 11:02
大佬 你这个代码好像没对Unicode做处理,能加上嘛

他这是官方原生数据
发表于 2023-6-10 11:09:54 | 显示全部楼层
mengdodo 发表于 2023-6-10 11:03
他这是官方原生数据

要做处理的话是不是还得先分割字符串啊,再对相关位置转义
发表于 2023-6-10 17:11:45 | 显示全部楼层
mengdodo 发表于 2023-6-10 16:33
是的,外层有一个()包围着,里面是json格式,解析下json应该就好了,我参照他的写法写了个golang版本
...

求golang版本的代码
发表于 2023-6-11 16:54:27 | 显示全部楼层

源代码

  1. package main

  2. import (
  3.         "encoding/json"
  4.         "io/ioutil"
  5.         "net/http"
  6.         "fmt"
  7.         "time"
  8. )

  9. type icpVar struct {
  10.         Data   interface{} `json:"data"`
  11.         ReCode int64       `json:"reCode"`
  12. }


  13. // 自定义自己需要的端口号
  14. const port = "127.0.0.1:8080"

  15. func main() {


  16.         slug := `
  17. _ _  _  _  _   _/_   _/_   
  18. / / //_'/ //_//_//_//_//_/  
  19.            _/            
  20. 启动日期: %s
  21. 启动端口: %s
  22. `
  23.         timestamp := time.Now().Format("2006-01-02 15:04:05")
  24.         fmt.Println(fmt.Sprintf(slug, timestamp, port))


  25.         http.HandleFunc("/api", apiHandler)
  26.         http.ListenAndServe(port, nil)
  27. }

  28. // GET请求/api?domain=xx.xx
  29. func apiHandler(w http.ResponseWriter, r *http.Request) {

  30.         w.Header().Set("Content-type", "application/json")

  31.         domain := r.URL.Query().Get("domain")

  32.         if len(domain) <= 0 {
  33.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": 4002, "msg": "domain参数不鞥为空"})
  34.                 return
  35.         }

  36.         req, err := http.NewRequest("GET", "https://cgi.urlsec.qq.com/index.php?m=check&a=check&url="+domain, nil)
  37.         req.Header.Set("Referer", "https://guanjia.qq.com")
  38.         if err != nil {
  39.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": 4002, "msg": "系统错误"})
  40.                 return
  41.         }

  42.         client := http.DefaultClient
  43.         response, err := client.Do(req)
  44.         if err != nil {
  45.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": 4002, "msg": "请求出错"})
  46.                 return
  47.         }

  48.         defer response.Body.Close()

  49.         content, err := ioutil.ReadAll(response.Body)
  50.         if err != nil {
  51.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": 4002, "msg": "响应失败"})
  52.                 return
  53.         }

  54.         res := string(content)[1:]
  55.         res = res[:len(res)-1]

  56.         var i icpVar
  57.         if err = json.Unmarshal([]byte(res), &i); err != nil {
  58.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": 4002, "msg": "读取失败"})
  59.                 return
  60.         }

  61.         if i.ReCode != 0 {
  62.                 json.NewEncoder(w).Encode(map[string]interface{}{"code": i.ReCode, "msg": i.Data})
  63.                 return
  64.         }

  65.         data := i.Data.(map[string]interface{})
  66.         result := data["results"].(map[string]interface{})

  67.         resp := map[string]interface{}{
  68.                 "url":    result["url"],
  69.                 "name":   result["Orgnization"],
  70.                 "number": result["ICPSerial"],
  71.                 "isICP":  result["isDomainICPOk"],
  72.         }
  73.         json.NewEncoder(w).Encode(map[string]interface{}{"code": 200, "data": resp})
  74.         return

  75. }
复制代码
发表于 2023-6-11 17:06:30 | 显示全部楼层
本帖最后由 yanzhiling2002 于 2023-6-11 17:07 编辑


这个if err真是很强的特色
发表于 2023-6-11 18:41:29 | 显示全部楼层
https://tool.cccyun.cc/checkurl
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-2 09:22 , Processed in 0.094067 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表