前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >博客大巴,自动登录,并发布信息开发小计。

博客大巴,自动登录,并发布信息开发小计。

作者头像
全栈程序员站长
发布2022-09-07 11:07:07
5000
发布2022-09-07 11:07:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

工具准备:Fiddler

相关网页:

登录页面:http://passport.blogbus.com/login

信息发布信息:http://www.blogbus.com/user/?blogid=49xxx944&mm=Post&aa=SaveAdd&page=&outputmode=1

登录页面,比较简单,使用Post提交username,password即可!判断是否成功,采用判断CookieContainer的Count属性是否大于0

相关代码如下:

<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。

代码

代码语言:javascript
复制
    Dim
    
     cc 
    
    As
    
     
    
    New
    
     System.Net.CookieContainer
 
    
    Dim
    
     postData 
    
    As
    
     
    
    String
    
     
    
    =
    
     
    
    String
    
    .Format(
    
    "
    
    username={0}&password={1}
    
    "
    
    , 
    
    "xxx
    
    "
    
    , 
    
    "xxxx
    
    "
    
    )
 
    
    Dim
    
     postByte() 
    
    As
    
     
    
    Byte
    
     
    
    =
    
     System.Text.Encoding.UTF8.GetBytes(postData)
 
    
    Dim
    
     wr 
    
    As
    
     System.Net.HttpWebRequest 
    
    =
    
     
    
    CType
    
    (System.Net.WebRequest.Create(
    
    "
    
    http://passport.blogbus.com/login
    
    "
    
    ), Net.HttpWebRequest)
 wr.CookieContainer 
    
    =
    
     cc
 wr.Method 
    
    =
    
     
    
    "
    
    POST
    
    "
    
    
 wr.ContentType 
    
    =
    
     
    
    "
    
    application/x-www-form-urlencoded
    
    "
    
    
 wr.ContentLength 
    
    =
    
     postByte.Length
 
    
    Dim
    
     sr 
    
    =
    
     wr.GetRequestStream
 sr.Write(postByte, 
    
    0
    
    , postByte.Length)
 sr.Close()

 
    
    Dim
    
     rs 
    
    As
    
     System.Net.HttpWebResponse 
    
    =
    
     
    
    CType
    
    (wr.GetResponse, Net.HttpWebResponse)
 
    
    Dim
    
     sr2 
    
    As
    
     
    
    New
    
     System.IO.StreamReader(rs.GetResponseStream, System.Text.Encoding.UTF8)
 
    
    Dim
    
     result 
    
    As
    
     
    
    String
    
     
    
    =
    
     sr2.ReadLine
 Console.WriteLine(result)

登录成功后,需要进行信息发布:

这里走了一点弯路,最开始一直没有设置WebRequest的Referer属性,一直不能提交成功。

相关代码如下:

<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。
<span role="heading" aria-level="2">博客大巴,自动登录,并发布信息开发小计。

代码

代码语言:javascript
复制
     postData 
    
    =
    
     
    
    "
    
    Title=ddd&PostTime=2009-12-25+17%3A45%3A14&SortID=0&tContent=%3Cp%3Edddd%3C%2Fp%3E&Tags=ddd&Excerpt=&Trackback=%E6%AF%8F%E8%A1%8C%E8%BE%93%E5%85%A5%E4%B8%80%E6%9D%A1%E5%BC%95%E7%94%A8%E5%9C%B0%E5%9D%80&ID=&DraftId=0&force=0
    
    "
    
    
 postByte 
    
    =
    
     System.Text.Encoding.UTF8.GetBytes(postData)
 wr 
    
    =
    
     
    
    CType
    
    (System.Net.WebRequest.Create(
    
     
    
    http://www.blogbus.com/user/?blogid=4xxx4&mm=Post&aa=SaveAdd&page=&outputmode=1
    
     
    
    ), Net.HttpWebRequest)
 wr.CookieContainer 
    
    =
    
     cc
 wr.Referer 
    
    =
    
     
    
    "
    
    http://www.blogbus.com/user/?mm=Post&aa=Add
    
    "
    
    
 wr.ContentType 
    
    =
    
     
    
    "
    
    application/x-www-form-urlencoded
    
    "
    
    
 wr.ContentLength 
    
    =
    
     postByte.Length
 wr.UserAgent 
    
    =
    
     
    
    "
    
    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; GTB6.3; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    
    "
    
    
 wr.KeepAlive 
    
    =
    
     
    
    True
    
    
 wr.Accept 
    
    =
    
     
    
    "
    
    image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*
    
    "
    
    
 wr.Method 
    
    =
    
     
    
    "
    
    POST
    
    "
    
    
 sr 
    
    =
    
     wr.GetRequestStream
 sr.Write(postByte, 
    
    0
    
    , postByte.Length)

 sr.Close()


 rs 
    
    =
    
     
    
    CType
    
    (wr.GetResponse, Net.HttpWebResponse)
 sr2 
    
    =
    
     
    
    New
    
     System.IO.StreamReader(rs.GetResponseStream, System.Text.Encoding.UTF8)
 result 
    
    =
    
     sr2.ReadToEnd
 
    
    If
    
     result.IndexOf(
    
    "
    
    提交成功
    
    "
    
    ) 
    
    <>
    
     
    
    -
    
    1
    
     
    
    Then
    
    
 Console.WriteLine(
    
    "
    
    提交成功
    
    "
    
    )
 
    
    Else
    
    
 Console

之前没有写过,类于这样的代码。写了之后发现,验证码,才是最难搞的!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154320.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档