gpt4 book ai didi

php - 使用 PHP 和 CURL 创建新的 etherpad

转载 作者:太空宇宙 更新时间:2023-11-04 15:26:10 26 4
gpt4 key购买 nike

我正在尝试编写一个简单的 PHP 脚本来自动设置新的 etherpads(请参阅 http://etherpad.com/)。

他们(还)没有用于创建新垫的 API,所以我想弄清楚我是否可以用其他方式做事。

尝试了一些之后,我发现如果您将一个随机字符串附加到 etherpad.com 到一个尚未创建的 pad,它会返回一个表单,询问您是否要在该地址创建一个新的 etherpad .如果您提交该表单,将在该 URL 上创建一个新的垫。

当时我的想法是我可以使用 CURL 创建一个 PHP 脚本,该脚本将复制该表单并欺骗 etherpad 在我给它的任何 URL 上创建一个新的 pad。我写了脚本,但到目前为止我无法让它工作。谁能告诉我我做错了什么?

首先,这是 etherpad 创建页面上的 HTML 表单:

`

<p><tt id="padurl">http://etherpad.com/lsdjfsljfa-fdj-lsdf</tt></p>

<br/>
<p>There is no EtherPad document here. Would you like to create one?</p>

<input type="hidden" value="lsdjfsljfa-fdj-lsdf" name="padId"/>
<input type="submit" value="Create Pad" id="createPad"/>

`

然后这是我的代码,它尝试使用 CURL 提交表单

$ch = curl_init();

//set POST variables
$url = "http://etherpad.com/ep/pad/create?padId=ldjfal-djfa-ldkfjal";
$fields = array(
'padId'=>urlencode("ldjfal-djfa-ldkfjal"),
);

$useragent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)";

// set user agent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value; }
print_r($fields_string);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);
print_r($result);
//close connection
curl_close($ch);

当我运行脚本时,PHP 报告一切都正确执行,但 etherpad 没有创建我的 pad。有什么线索吗?

最佳答案

我没有调查过这个特定的网站,但我想有一些重要的标题丢失了。这是一个非常通用的方法,几乎​​适用于任何网站:

使用 Wireshark 等网络嗅探器捕获所有连接。然后将发送的 POST 字段与您的进行比较。

一个更简单的方法是使用 Netcat。只需将页面保存到磁盘,将表单 URL 更改为 http://localhost:3333/并运行

$ nc -l -p 3333

现在打开本地 HTML 文件并适本地填写字段。您将立即看到本应传输到主机的所有 header 。

(也有针对 Mozilla Firefox 的扩展,但通常它们只会减慢浏览器的速度,并没有提供太多好处。)

另请阅读我在 To auto fill a text area using php curl 上发布的内容因为它可能会帮助您在 PHP 中实现。

顺便说一句,您正在通过 GET POST 发送参数“padId”。那是没有必要的。检查 Etherpad 形式实际使用的内容并坚持使用。

关于php - 使用 PHP 和 CURL 创建新的 etherpad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com