最新消息:VPS服务器又从fzhost.net换回Linode了,主题仍用朋友推荐的大前端D8

【记录】用python脚本修改网易163的帖子

Python crifan 399浏览 0评论

此处只是记录一下,想要实现用python脚本,去修改网易163博客中的帖子的全过程。

1. 之前是已经通过python脚本,通过cookiejar自动管理cookie,而实现了登陆163博客,然后可以查看到所有的帖子,包括“私人日志”,“博友可见”等类型的帖子。

此前,已经实现了用python登陆百度并修改百度的帖子。

此处想要去实现修改163博客中的帖子。

但是经过一番抓取整个修改帖子的过程中发现,浏览器中首次修改帖子,是需要输入验证码的。

在点击发布的时候,会访问这个地址:

http://api.blog.163.com/cap/captcha.jpgx?parentId=172799491&r=463398

然后返回一个验证码的图片:

vdsv captcha

然后输入对应的验证,vdsv,之后,对应提交的post data中,就包含有对应的参数:

&valcodeKey=vdsv了。

修改帖子成功后,返回的代码应该是这样的:

{r:1,id:’1067120792′,sfx:’blog/static/17279949120120102415384/’}

对于修改帖子的前后过程,现在是已经分析清楚了,但却发现,想要用python模拟实现的话,貌似很难。

因为网上找了一番,貌似用python对验证码解码以获得对应的验证码的字母数字的话,很难实现。即使实现了,多数也都是针对简单的那种验证码才可以的,复杂一点的,像网易博客这样的,字符数字类型的验证码,带颜色的,而且是七扭八歪的,甚至有时候人自己都看不太清楚的,是很难通过python解码出来的。

因此,得出结论,暂时放弃通过python去修改网易的帖子了。

除非以后有空,并且能找到有效的python的库,可以方便地解码163的发布帖子时候的验证码,才可以继续折腾用python修改帖子。

2. 不过,此处还是心存一丝侥幸心理。

心想,万一用python脚本修改帖子的时候,因为可以不用去访问captcha的地址,不需要获得验证码的图片,因此,是不是也可以不需要提交对应的验证码呢,如果是的话,那么岂不是也可以不用提交验证码,就可以直接更新博客帖子了?

所以,就又花时间,去写python代码,试试是否可行。

在一切都准备好后,即

python中设置好了:

(1)所要提交的url:http://api.blog.163.com/againinput4/editBlogNew.do?p=1&n=0

(2)对应的post data的结构是:

        postDict = {
            "tag"           : "", #should find original blog tags,
            "cls"           : classId, # 新的分类 的 id, fks_084066086082085064082082085095085081083068093095082074085
            "allowview"     : "-100",
            "refurl"        : "",
            "abstract"      : "",
            "bid"           : bid, #fks_081075087094087074084084086095085081083068093095082074085
            "origClassId"   : classId, # 原先的分类的id
            "origPublishState": "1",
            "oldtitle"      : titleGb18030, #test%E6%9B%B4%E6%96%B0%E5%B8%96%E5%AD%90%E6%B5%8B%E8%AF%952
            "todayPublishedCount": "0",
            "NETEASE_BLOG_TOKEN_EDITBLOG" : editBlogToken, #e6a5766d73b0daf359a37e9361e11e46
            "title"         : titleGb18030,
            "HEContent"     : newPostContentGb18030,
            "copyPhotos"    : "",
            "suggestedSortedIds": "",
            "suggestedRecomCnt": "",
            "suggestedStyle": "0",
            "isSuggestedEachOther": "0",
            "photoBookImgUrl": "",
            "miniBlogCard"  : "0",
            "p"             : "1",
        };

提交的encode之后的post data是:

miniBlogCard=0&photoBookImgUrl=&allowview=-100&isSuggestedEachOther=0&todayPublishedCount=0&NETEASE_BLOG_TOKEN_EDITBLOG=18a51c507a2407ca8a6ee920c8f46d26&title=intro&abstract=&origPublishState=1&suggestedRecomCnt=&p=1&copyPhotos=&tag=&refurl=&HEContent=省略此处超长的内容&origClassId=fks_084066086082085064082082085095085081083068093095082074085&suggestedStyle=0&oldtitle=intro&bid=fks_081075087094087074084084086095085081083068093095082074085&suggestedSortedIds=&cls=fks_084066086082085064082082085095085081083068093095082074085

但是最后返回的是错误的代码:

{r:-3,id:”,sfx:’/’}

上述返回的错误的代码的含义,其实都猜出来了,估计就是验证码的事情。

然后去网上找了一堆关于上述错误的帖子,也都说到了,是网易发布博客帖子,需要验证码,如果没有验证码,则会出现上面的-3的错误。

更加精准的验证自己的猜测,是后来找到了对应的代码,是:

http://b1.bst.126.net/newpage/r/j/m/m-2/em.js?v=8853408733

中的:

if(!aw || aw.r != 1) {
    aw = aw || O;
    if(aw.r == -3) {
        E.bN('验证码错误!', true, false, 'fail');
        p.KY.ay();
    } else if(aw.r == -2) {
        E.bN('TOKEN错误!', true, false, 'fail');
    } else if(aw.r == -1) {
        E.bN('REFERER错误!', true, false, 'fail');
    } else {
        E.bN('暂时无法保存日志,请稍后再试!', true, false, 'fail');
    }

3.记得在哪里听到有人说过,好像是如果当然发布多个帖子,就会有对应的验证码出现的。发布很少的帖子,就不会有验证码出现。

对此,此刻测试出来的结果是,同一个帖子,如果一段时间内,连续发布个2,3次,除了第一次,之后每次更新帖子,都不会出现验证码的。

所以,即修改同一帖子,第二次往后,就不需要输入验证码了。

对应的,感觉很像提交的post data中:

"todayPublishedCount": "0",

是不是,如果把此变量改为大于0的某个数,是不是就可以避免使用验证码了?

然后去尝试,把todayPublishedCount改为1,

的结果,还是同样的r=-3的错误。

并且,专门去尝试了,修改某个帖子,第一次修改,是需要验证码的,修改后,第二次修改,就不需要验证码了,然后抓取了第二次修改,不需要验证码时候,对应的post data,发现除了没有valcodeKey之外,对应的todayPublishedCount的值,也还是0.

刚刚才注意到,估计todayPublishedCount所表示的含义是,今天所发布的帖子的个数,而和当前这个帖子所被修改的次数,是没关系的。看来还是得想其他办法,绕过这个验证码的事情。

4。比较了,第一次修改带验证码的cookies,和第二次修改不带验证码的cookies,结果没啥区别。

看来,真的是暂时只能放弃通过python脚本来修改更新网易的帖子了。

转载请注明:在路上 » 【记录】用python脚本修改网易163的帖子

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
15 queries in 0.266 seconds, using 10.32MB memory