1

我正在尝试制作一个 PHP 脚本,它可以发布到新浪微博上的群组,这是一个中文 Twitter 克隆。除了群组功能之外,微博在实现上(甚至在 API 中)似乎与 Twitter 几乎相同——因此我提到 Twitter 作为类比,因为区别与我的问题无关。

我可以通过 API 定期发帖,但问题是,微博的 API 不支持发帖到群组,大概是由于可能带来的潜在垃圾邮件危害。(注意:我的目的不是向数百万垃圾发送垃圾邮件,而是要获得一个脚本,以每天自动将专利到期信息发布给相关行业团体。)

现在,我知道应该有一个变通办法,因为有一个应用程序允许一个人手动发布到群组(新浪微自动群发精灵),尽管来源是私人的。因此,我尝试使用 Firebug 检查发送到服务器的表单数据,以查看是否可以通过手动使 PHP 脚本复制表单信息来替换 API 推文命令,但无济于事。

这是我在建立 OAuth 连接后调用的 callback.php 文件的代码。发布更新的有效 API 方法已被注释掉,以支持功能失调的发布表单方法(在 HTML 标记中)。

<?php
session_start();
include_once( 'config.php' );
include_once( 'saetv2.ex.class.php' );
$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );

if (isset($_REQUEST['code'])) {
    $keys = array();
    $keys['code'] = $_REQUEST['code'];
    $keys['redirect_uri'] = WB_CALLBACK_URL;
    try {       $token = $o->getAccessToken( 'code', $keys ) ;  } catch (OAuthException $e) {}
}

if ($token) {
    $_SESSION['token'] = $token;
    setcookie( 'weibojs_'.$o->client_id, http_build_query($token) );

    ?><html><head></head><body>
    <form action="http://www.weibo.com/aj/mblog/add?__rnd=1340066897833" method="post">
    <input type="hidden" name="_surl" value="">
    <input type="hidden" name="_t" value=0>
    <input type="hidden" name="location" value="home">
    <input type="hidden" name="module" value="stissue">
    <input type="hidden" name="pic_id" value="">
    <input type="hidden" name="rank" value="">
    <input type="text" name="text" value="测试发表微博 test message" />
    <input type="submit">
    </form></body></html><?

    /*
    $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] );
    $msg = $c->update("测试发表微博 test message");
    if ($msg === false || $msg === null){   echo "Error occured";   return false;}
    if (isset($msg['error_code']) && isset($msg['error'])){ echo ('Error_code: '.$msg['error_code'].';  Error: '.$msg['error'] );   return false;} 
    echo($msg['id']." : ".$msg['text']." ".$msg["created_at"]);
    */

    } else echo('授权失败。 authentication failed');
?>

我对这一切都很陌生,所以我可能遗漏了一些明显的东西,但是这里有没有人足够了解 Twitter/Weibo 来找到这里的问题?也许会有一个简单的解决方法?谢谢!

4

1 回答 1

0

Been a while, but for anyone stumbling upon this thread: by now I caught up a bit, and it seems like browser automation with Ruby gem Watir would have much better chances of working than form spoofing.

于 2013-01-26T07:14:09.127 回答