首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Chromedp中发布请求,模拟表单

如何在Chromedp中发布请求,模拟表单
EN

Stack Overflow用户
提问于 2021-10-19 16:10:31
回答 1查看 400关注 0票数 0

Chromedp有一个chromedp.Submit()函数,它查询html页面中存在的表单并提交它。现在我需要的是在纯golang代码中发布一个请求,在html页面中没有表单元素,类似的ajax帖子,这个帖子应该以当前上下文为基础,包括cookie、headers。在Chromedp中可以这样做吗?谢谢您的建议!

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 07:02:58

其中一个选项是使用chromedp.Evaluate()执行JavaScript片段,然后使用获取发送post请求。见下面的演示:

代码语言:javascript
复制
package main

import (
    "context"
    "log"

    "github.com/chromedp/cdproto/runtime"
    "github.com/chromedp/chromedp"
)

func main() {
    ctx, cancel := chromedp.NewContext(context.Background())
    defer cancel()

    js := `
async function postData(url = '', data = {}) {
  const response = await fetch(url, {
    method: 'POST',
    body: JSON.stringify(data)
  });
  return response.text();
}; postData('/post', {answer: 69634319})
    `

    var response string
    if err := chromedp.Run(ctx,
        chromedp.Navigate("https://httpbin.org/cookies/set?name=test"),
        chromedp.Evaluate(js, &response, func(ep *runtime.EvaluateParams) *runtime.EvaluateParams {
            return ep.WithAwaitPromise(true)
        }),
    ); err != nil {
        log.Fatal(err)
    }

    log.Println(response)
}

如果您对js表达式感兴趣,请按照以下链接获得更多信息:https://github.com/chromedp/chromedp/issues/1028#issuecomment-1061482792

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69634319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档