Как спарсить Facebook Marketplace?

Я пытаюсь парсить facebook marketplace на языке программирования Golang и использую библиотеку Colly. Вот мой код который я написал:

package parser

import (
    "fmt"
    "log"
    "math/rand"

    "github.com/gocolly/colly/v2"
)

func Parse(client *Client) error {
    c := colly.NewCollector(colly.AllowURLRevisit(), colly.AllowedDomains("www.facebook.com"))

    headersList, err := client.Fake_browser_headers()
    if err != nil {
        return err
    }

    c.SetProxy("socks5://login:passwors@host:port")

    c.OnRequest(func(r *colly.Request) {
        randomHeader := randomHeader(headersList)
        for key, value := range randomHeader {
            r.Headers.Set(key, value)
        }
        log.Println("Visiting", r.URL)
    })

    c.OnError(func(_ *colly.Response, err error) {
        log.Println("Something went wrong:", err)
    })

    c.OnResponse(func(r *colly.Response) {
        log.Println("Visited", r.Request.URL)
    })

    c.OnHTML("div.x9f619 div.x1ja2u2z div.xat3117 div.xd4ddsz div.x1n2onr6 div.x8gbvx8 div.x9f619 span.x1lliihq div.x3ct3a4 div.x78zum5 div.x1q0g3np ", func(e *colly.HTMLElement) {

        price := e.ChildText("span.x193iq5w")
        fmt.Println(price)
    })

    c.OnScraped(func(r *colly.Response) {
        log.Println("Finished", r.Request.URL)
    })

    c.Visit("https://www.facebook.com/marketplace/category/vehicles")

    return nil
}

func randomHeader(headersList []map[string]string) map[string]string {
    randomIndex := rand.Intn(len(headersList))
    return headersList[randomIndex]
}

Метод client.Fake_browser_headers() возвращает фейковые заголовки браузера. После выполнения кода я получаю следующее:

$ go run cmd/bot/main.go
2024/04/01 19:02:51 Visiting https://www.facebook.com/marketplace/category/vehicles
2024/04/01 19:02:52 Visited https://www.facebook.com/login/?next=https%3A%2F%2Fwww.facebook.com%2Fmarketplace%2Fcategory%2Fvehicles
2024/04/01 19:02:52 Finished https://www.facebook.com/login/?next=https%3A%2F%2Fwww.facebook.com%2Fmarketplace%2Fcategory%2Fvehicles

я не получил никаких данных с сайта и вижу, что facebook перенаправил парсер на авторизацию и получается facebook не дает данные будучи не авторизованным и мой вопрос это - как мне авторизовать мой парсер, чтобы я имел доступ к данным.

Я видел, что у facebook есть API, но не нашел способа, чтобы получить данные с Marketplace


Ответы (0 шт):