Задать вопрос
@Nekroz23

Как сделать автоматическое заполнение форм на сайте через скрипт Golang?

Есть сайт с формами которые необходимо заполнить, кнопками которые необходимо нажать
Как мне отправить post запрос и получить ответ?

Пробовал так, но не выходит
Прошу не кидаться камнями, программирую совсем недавно)
package main

import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)

const postUrl = "link"

type authDate struct {
fName string
lName string
tNumber string
email string

}

func main() {
auth := &authDate{"", "name", "lname", "email"}
fmt.Println(auth)
post(auth)

}
func post(data *authDate) error {
param := fmt.Sprintf("user_forms[0][name]=%s&user_forms[0][surname]=%s&user_forms[0][phone]=%s&user_forms[0][mail]=%s", data.fName, data.lName, data.tNumber, data.email)
buf := bytes.NewBufferString(param)
resp, err := http.Post(postUrl, "application/x-www-form-urlencoded", buf)
if err != nil {
return err
}
defer resp.Body.Close()
ba, err := ioutil.ReadAll(resp.Body)
fmt.Printf(resp.Status)
fmt.Printf("response: %s\n")
if ba != nil{

}
return nil

}<code lang="go">

</code>
  • Вопрос задан
  • 604 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Можно использовать встроенную функцию, так будет надёжнее:
formData := url.Values{}
formData.Set("user_forms[0][name]", authDate.fName)
...
resp, err := http.PostForm(postUrl, formData)


Но судя по коду, вам нужно больше, чем просто отправить данные формы.
Вы явно хотите пройти аутентификацию, результатом отправки данных в подобную форму, скорее всего, будет cookie, по которому вас дальше сайт будет аутентифицировать.

Для решения такой задачи будет лучше использовать какой нибудь web scraping framework.

Например:
https://github.com/gocolly/colly
https://github.com/anaskhan96/soup
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы