Как спарсить 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