将变量发送到第三方在线表单

时间:2016-03-30 00:59:08

标签: forms http go

在golang中,有没有办法将变量传递给Web表单的一部分?  例如,将"123 Random St."发送到https://www.dominos.com/en/pages/order/#/locations/search/Street address部分,依此类推?我找到pizza_party*,但使用的GUI已不再可用,我也找到了pizzadash**,但这使用信用卡我想要使用现金。我甚至找到了一个golang列表,但是他们使用的链接不再起作用了。***
因此,我的目标是:order a pizza in golang through the dominos website API!

注意:请使用示例建议包装或功能!

注意:我不想制作网络刮刀/数据获取器。

注意:您的答案必须适用于至少我链接网站的一个方框。

注意:我想填写类似于linux命令行提供的链接的链接。

* https://github.com/coryarcangel/Pizza-Party-0.1.b
** https://github.com/bhberson/pizzadash
*** https://golanglibs.com/top?q=pizza

2 个答案:

答案 0 :(得分:1)

这是您将任何表单值发布到在线表单上的方式。如果您知道服务的POST端点。

func main():

   resp, err := http.PostForm(targetPostUrlHere,
    url.Values{"Service_Type": {"Delivery"}, 
        "Address_Type_Select": {"House"}, 
        "Street": {"123 E 24th St"}, 
        "Address_Line_2": {"4D"}, 
        "City": {"New York"},
        "Region": {"NY"},
        "Postal_Code": {"10027"}})

}

**注意:字段键和值是猜测值。您必须检查表单中预期的实际键名。

在您的情况下,https://www.dominos.com/en/pages/order/是表单页面的端点。填写并提交表单后,使用类似于前面提到的代码的POST方法将信息提交到专用的CREATE端点(CRUD中的C),通常可以在<form>中找到html标签。

<form action="posttargetendpoint" method="POST">...</form>

POST操作成功后,通常Web服务会将您重定向到另一个页面。在您的情况下,它是https://www.dominos.com/en/pages/order/#/section/Food/category/AllEntrees/

但是,任何好的Web服务都不会以明文形式公开POST端点,因为它是易受攻击的攻击点。欢迎您通过检查Domino的页面源来查找并相应地调整Go代码中的字段值。

现在要创建一个包含PostForm代码的命令行提示符,我建议您查看https://github.com/codegangsta/cli这是一个用于创建快速命令行应用程序的非常好的包。

答案 1 :(得分:0)

我假设您的意思是代表用户从您的后端发送到另一个站点的管道信息?

在域之间传递信息的标准方法是通过HTTP参数,通常是通过GET请求,但是远程站点的已建立协议需要支持此功能。您还可以使用iframe将其他网站的页面嵌入到您的页面中,但是,您将无法远程交互,调用JS代码,甚至根本无法查询页面。跨域安全保护措施合理地禁止此类功能,并且一般而言,出于安全原因,代表用户通过其浏览器进行交互也受到限制。

但是,如果您希望模拟用户行为,例如使用来自您自己的主机或浏览器的机器人或网络抓取工具,那么这是一个不同的故事。有许多框架提供了与页面交互的丰富功能。我建议查看Selenium,它充当虚拟浏览器。 Python中还有大量的库用于处理来自HTML和结构化数据的数据。你可能想看看美丽的汤和Scrapy。

希望这有帮助。