我曾经以为我会使用curl,但看起来我错了。我需要做的是捕获帖子并进行一些数据库查找以进行验证,然后将验证的数据发布到远程URL。
我通过填充html表单并使用javascript提交它来完成此操作,但这有明显的缺陷。我想构建一个帖子并发送浏览器,就像他们已经将表单发布到远程URL一样。
我在卷曲文档中遗漏了什么吗?什么是Good™方式?
答案 0 :(得分:2)
你可以使用curl。
但您可能还有其他问题要考虑。当浏览器实际发布到另一个URL时,会设置Cookie,会话等。从服务器发布时可能不会设置这些。您还应该查看有关SO的屏幕抓取问题。
假设情况并非如此,您应该能够获得帖子,验证字段,并使用curl重新发布。 many有many examples doing this。
编辑
答案 1 :(得分:2)
我没有尝试过,但是我要做的是将表单提交到最终目的地并添加一个javascript onSubmit()函数,它向服务器发出ajax请求并返回true或false。 / p>
也就是说,如果你可以依赖javascript ......
答案 2 :(得分:2)
请求/响应就像这样:
+---------+ request +--------+ curl request +--------+
| | -----------> | | ---------------> | |
| browser | | url #1 | | url #2 |
| | <----------- | | <--------------- | |
+---------+ response +--------+ curl response +--------+
坐在浏览器后面的用户将无法知道最终的URL(上面的URL#2)是什么,因为它在HTML源代码中没有任何地方,所以他们不会破解并跳过中间人URL (网址#1)手动。
答案 3 :(得分:1)
我发现发布“wget”往往比CURL更容易管理。
$remoteContent = `wget -o - http://someremoteurl`;
除此之外,马特的反应是正确的。但是,如果您从屏幕抓取的远程站点的响应包含链接,您将不得不搜索并替换它们(如果您想自己处理它们) - 此时您正在创建代理服务器。 ..
-CF