| package main |
|
|
| import ( |
| "encoding/json" |
| "fmt" |
| "log" |
| "net/http" |
| "strings" |
|
|
| "github.com/gin-gonic/gin" |
| ) |
|
|
| func main() { |
| gin.SetMode(gin.ReleaseMode) |
| r := GinRouter() |
|
|
| fmt.Println("Starting server on :2304") |
| r.Run("0.0.0.0:7860") |
| } |
|
|
| func GinRouter() *gin.Engine { |
| r := gin.New() |
| r.Use(gin.Recovery(), gin.Logger()) |
|
|
| r.GET("/", func(c *gin.Context) { |
| c.String(http.StatusOK, "Hello, World!") |
| }) |
|
|
| r.GET("/instagram/post", func(c *gin.Context) { |
| shortcode := c.Query("shortcode") |
| if shortcode == "" { |
| c.JSON(http.StatusBadRequest, gin.H{"error": "Thiếu tham số shortcode"}) |
| return |
| } |
|
|
| result, err := instagramPost(shortcode) |
| if err != nil { |
| c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) |
| return |
| } |
| c.JSON(http.StatusOK, result) |
| }) |
| return r |
| } |
|
|
| func instagramPost(uid string) (map[string]interface{}, error) { |
| client := &http.Client{} |
| var data = strings.NewReader(`lsd=AdTG3HXj-AuAqL1v6Ppe6xBXk0s&jazoest=2957&fb_api_caller_class=RelayModern&fb_api_req_friendly_name=PolarisPostActionLoadPostQueryQuery&variables={"shortcode":"` + uid + `","fetch_comment_count":0,"fetch_related_profile_media_count":0,"parent_comment_count":0,"child_comment_count":0,"fetch_like_count":0,"fetch_tagged_user_count":null,"fetch_preview_comment_count":0,"has_threaded_comments":true,"hoisted_comment_id":null,"hoisted_reply_id":null}&server_timestamps=true&doc_id=10015901848480474`) |
| req, err := http.NewRequest("POST", "https://www.instagram.com/api/graphql", data) |
| if err != nil { |
| log.Fatal(err) |
| } |
| req.Header.Set("authority", "www.instagram.com") |
| req.Header.Set("accept", "*/*") |
| req.Header.Set("accept-language", "vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5") |
| req.Header.Set("content-type", "application/x-www-form-urlencoded") |
| req.Header.Set("dpr", "2.625") |
| req.Header.Set("origin", "https://www.instagram.com") |
| req.Header.Set("referer", "https://www.instagram.com/") |
| req.Header.Set("sec-ch-prefers-color-scheme", "dark") |
| req.Header.Set("sec-ch-ua", `"Chromium";v="107", "Not=A?Brand";v="24"`) |
| req.Header.Set("sec-ch-ua-full-version-list", `"Chromium";v="107.0.5304.74", "Not=A?Brand";v="24.0.0.0"`) |
| req.Header.Set("sec-ch-ua-mobile", "?1") |
| req.Header.Set("sec-ch-ua-model", `"SM-A336E"`) |
| req.Header.Set("sec-ch-ua-platform", `"Android"`) |
| req.Header.Set("sec-ch-ua-platform-version", `"13.0.0"`) |
| req.Header.Set("sec-fetch-dest", "empty") |
| req.Header.Set("sec-fetch-mode", "cors") |
| req.Header.Set("sec-fetch-site", "same-origin") |
| req.Header.Set("user-agent", "Mozilla/5.0 (Linux; Android 13; SM-A336E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36") |
| req.Header.Set("x-asbd-id", "129477") |
| req.Header.Set("x-csrftoken", "qPAu6oXeZT5gjItJk4yFAB") |
| req.Header.Set("x-fb-friendly-name", "PolarisPostActionLoadPostQueryQuery") |
| req.Header.Set("x-fb-lsd", "AdTG3HXj-AuAqL1v6Ppe6xBXk0s") |
| req.Header.Set("x-ig-app-id", "936619743392459") |
| resp, err := client.Do(req) |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer resp.Body.Close() |
|
|
| var result map[string]interface{} |
| if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { |
| return nil, fmt.Errorf("lỗi giải mã JSON:") |
| } |
|
|
| return result, nil |
| } |