Konu
:
Golang TurkHackTeam API
20-12-2020, 23:21:11
#0
Quantaism
Açık Profil bilgileri
Özel Mesaj Gönder
Quantaism tarafından gönderilen tüm mesajları bul
Quantaism'ı arkadaş olarak ekle
merhaba, bugün tht için bir api yaptım. açıkçası kullanım için değil de, basit bir http server örneği için yaptım. golang'e yeni başladığım için bir alıştırma yani... api, /visitors path'ine get methodu id parametresi istiyor. sonra content-type header'ı application/json; charset=utf-8 olan bir response döndürüyor
Alıntı:
{"visitors":["Ⱨ₳₵₭ĐɆⱤ₮","baysiberbela","GestapoEfsane","His oka* ","laz123123","LosT","oxydes","RootAdam","Root Beta ","x4807"]}
Kod:
package main
import (
"net/http"
"strconv"
"io/ioutil"
"golang.org/x/text/encoding/charmap"
"github.com/anaskhan96/soup"
"encoding/json"
)
type visitorsJson struct {
Visitors [10]string `json:"visitors"`
}
type vBulletinCookies struct {
vspassword string
vsuserid string
}
func getProfileVisitors(id string, cookies vBulletinCookies) string {
client := http.Client{}
req, _ := http.NewRequest("GET", "https://www.turkhackteam.org/members/"+id+".html", nil)
req.Header.Add("User-Agent", "Mozilla/5.0")
req.AddCookie(&http.Cookie{Name: "vspassword", Value: cookies.vspassword})
req.AddCookie(&http.Cookie{Name: "vsuserid", Value: cookies.vsuserid})
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
decoder := charmap.ISO8859_9.NewDecoder()
iso_body, _ := decoder.Bytes(body)
var visitors [10]string
parser := soup.HTMLParse(string(iso_body))
htmlvisitors := parser.FindAll("div", "class", "s-last-visitors-x")
for i, _ := range htmlvisitors {
visitors[i] = htmlvisitors[i].Find("span").Text()
}
visitorsStruct := visitorsJson{Visitors: visitors}
visitorsJson, _ := json.Marshal(visitorsStruct)
return string(visitorsJson)
}
func home(writer http.ResponseWriter, resp *http.Request) {
var status string
var status_code int
if resp.Method == "GET" {
id := resp.URL.Query().Get("id")
if id != "" {
if _, err := strconv.Atoi(id); err != nil {
status = "Sadece profil ID'si girmelisiniz! Örnek: 926672"
status_code = 400
} else {
writer.Header().Add("Content-Type", "application/json; charset=utf-8")
status = getProfileVisitors(id, vBulletinCookies{vsuserid: "", vspassword: ""}) //kendi vsuserid ve vspassword'ünüz
status_code = 200
}
} else {
status = "id değeri boş olmamalıdır"
status_code = 400
}
}
writer.WriteHeader(status_code)
writer.Write([]byte(status))
}
func main() {
http.HandleFunc("/visitors", home)
http.ListenAndServe(":8080", nil)
}