Pet*_*son 4 c# http httpwebrequest
我可能会尝试做一些不可能或非常难的事情,但无论如何我想尝试一下.我一直致力于编写一个程序,可以为我自动downvote Stack Overflow帖子.
所以,我合乎逻辑的第一步是找出按下downvote按钮后幕后发生的事情.我使用HTTP网络分析器来查看浏览器如何与我想要进行downvote的服务器通信.这就是它给我看的内容.

然后我想我应该能够远程downvote它,如果我写一个C#程序发送一个HTTP请求与我按下downvote按钮时发送的HTTP请求相同.所以我想出了这个:
WebRequest req = WebRequest.Create("http://stackoverflow.com/posts/3905734/vote/3");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = 37;
req.Headers.Add("Request", "POST /posts/3905734/vote/3 HTTP/1.1");
req.Headers.Add("Accept", "application/json, text/javascript, */*; q=0.01");
req.Headers.Add("X-Requested-With", "XMLHttpRequest");
req.Headers.Add("Referer", "http://stackoverflow.com/questions/3905734/how-to-send-100-000-emails-weekly");
req.Headers.Add("Accept-Language", "en-us");
req.Headers.Add("Accept-Encoding", "gzip, deflate");
req.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAAU)");
req.Headers.Add("Host", "stackoverflow.com");
req.Headers.Add("Connection", "Keep-Alive");
req.Headers.Add("Cache-Control", "no-cache");
req.Headers.Add("Cookie", "__utmc=140029553; __utma=140029553.1661295586.1330352934.1331336368.1331402208.44; __utmz=140029553.1331159433.33.7.utmcsr=meta.stackoverflow.com|utmccn=(referral)|utmcmd=referral|utmcct=/users/153008/cody-gray; __qca=P0-1737884911-1330352934366; usr=t=TJUTES9CakOu&s=f3MgHSwW2EWk; km_ai=91003; km_uq=; km_lv=x; km_ni=91003; __utmb=140029553.17.10.1331402208");
var requestMessage = Encoding.UTF8.GetBytes("fkey=abfd538253d7ca1e988f306ea992eda0");
var strm = req.GetRequestStream();
strm.Write(requestMessage, 0, requestMessage.Length);
strm.Close();
var rep = req.GetResponse();
strm = rep.GetResponseStream();
var rdr = new StreamReader(strm);
string responseFromServer = rdr.ReadToEnd();
Console.WriteLine(responseFromServer);
rdr.Close();
strm.Close();
Console.Read();
Run Code Online (Sandbox Code Playgroud)
有一些标题,它不会让我写.对于头Accept,Referer,User-Agent并且Connection,它抛出一个错误是这样的:
必须使用适当的属性或方法修改此标头.
并且Host标头导致此错误:
无法直接修改"主机"标头.
我只是注意到导致问题的标题,乐观地希望它仍然可以工作,但我从服务器回来了这条消息
{"Success":false,"Warning":false,"NewScore":0,"Message":"","Refresh":false}
这"Success":false似乎表明它没有成功地击败帖子,我去了页面,它与我运行程序之前的计票数相同.换句话说,我的程序没有用.
有没有人知道我是否走在正确的道路上,我能做些什么才能让它发挥作用,或者是否有可能让它发挥作用?
Mar*_*ell 25
你可能不会认为这是一个答案,但我确实如此; 你想要做的就是滥用系统.出于多种原因,我们不提供API,并且试图对不属于已发布API的部分进行反向工程是......令人讨厌的.
感谢您发布安全Cookie.因此,我会点击一个按钮,让您退出SE,以保护您的帐户免遭滥用.您将能够正常重新登录.
如果你坚持试图滥用这个制度,我们保留坦率地完全幼稚和幼稚的权利; 我们总是很乐意引入额外的篮球和障碍,随机更改API等,如果我们认为你正在尝试做坏事.或者只是暂停帐户或阻止网络访问.
请允许我总结一下:我们真的不希望你这样做.
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |