社区
C#
帖子详情
有关网页数据采集的几个问题(200分相送)
zhyindividual
2007-12-01 02:37:58
有关网页数据采集的几个问题(200分相送)
1.C#如何伪造来路地址? (50分)
在数据采集时,有些网站/论坛有来路地址验证,如何实现数据的采集?
2.如何实现Discuz论坛的自动发帖/回复功能? (150分)
请给出经过测试的关键代码,谢谢.
对于解决了问题的朋友,予以全部分数相送.(限于级别不能同时给200分,但只要解决了问题绝对另开贴给分)
再次谢谢与期望各位热心的朋友予以帮助.
...全文
237
21
打赏
收藏
有关网页数据采集的几个问题(200分相送)
有关网页数据采集的几个问题(200分相送) 1.C#如何伪造来路地址? (50分) 在数据采集时,有些网站/论坛有来路地址验证,如何实现数据的采集? 2.如何实现Discuz论坛的自动发帖/回复功能? (150分) 请给出经过测试的关键代码,谢谢. 对于解决了问题的朋友,予以全部分数相送.(限于级别不能同时给200分,但只要解决了问题绝对另开贴给分) 再次谢谢与期望各位热心的朋友予以帮助.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhyindividual
2007-12-17
打赏
举报
回复
没人回啦?再顶上下.要没人回,明天结贴了.
zhyindividual
2007-12-11
打赏
举报
回复
..............惭愧的很,本人对这么一段代码很是头痛,能不能给我一个可运行的实例?
asp.net界面,向某个网站提交数据就OK.
感谢!
如果不便公开发布的话,我的邮箱是 tjz_86@163.com
shrinerain
2007-12-10
打赏
举报
回复
呃... Google上一下很多的...
下面这个例子是用socket发SOAP消息, 当然你也可以用它发HTTP消息.
Console.WriteLine("Calling Web Method GetTitles() using sockets");
string input = "testing";
string soapMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
soapMessage += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchemainstance\"";
soapMessage += " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"";
soapMessage += " xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
soapMessage += "<soap:Body>";
soapMessage += "<GetTitles xmlns=\"http://tempuri.org/\">";
soapMessage += "<filter>" + input + "</filter>";
soapMessage += "</GetTitles>";
soapMessage += "</soap:Body>";
soapMessage += "</soap:Envelope>";
Console.WriteLine("SOAP message is: \n");
Console.WriteLine(soapMessage);
string host = "localhost";
string webService = "/TestAuto/Ch8/TheWebService/BookSearch.asmx";
string webMethod = "GetTitles";
IPHostEntry iphe = Dns.Resolve(host);
IPAddress[] addList = iphe.AddressList; // addList[0] == 127.0.0.1
EndPoint ep = new IPEndPoint(addList[0], 80); // ep = 127.0.0.1:80
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
socket.Connect(ep);
if (socket.Connected)
Console.WriteLine("\nConnected to " + ep.ToString());
else
Console.WriteLine("\nError: socket not connected");
string header = "POST " + webService + " HTTP/1.1\r\n";
header += "Host: " + host + "\r\n";
header += "Content-Type: text/xml; charset=utf-8\r\n";
header += "Content-Length: " + soapMessage.Length.ToString() + "\r\n";
header += "Connection: close\r\n";
header += "SOAPAction: \"http://tempuri.org/" + webMethod + "\"\r\n\r\n";
Console.Write("Header is: \n" + header);
string sendAsString = header + soapMessage;
byte[] sendAsBytes = Encoding.ASCII.GetBytes(sendAsString);
int numBytesSent = socket.Send(sendAsBytes, sendAsBytes.Length,
SocketFlags.None);
Console.WriteLine("Sending = " + numBytesSent + " bytes\n");
byte[] receiveBufferAsBytes = new byte[512];
string receiveAsString = "";
string entireReceive = "";
int numBytesReceived = 0;
while ((numBytesReceived = socket.Receive(receiveBufferAsBytes, 512,
SocketFlags.None)) > 0 )
{
receiveAsString = Encoding.ASCII.GetString(receiveBufferAsBytes, 0,
numBytesReceived);
entireReceive += receiveAsString;
}
zhyindividual
2007-12-10
打赏
举报
回复
有几天没来看了.没想到错过了 Shrinerain 的指点.....
感谢,貌似这个提到点子上了, 请问能够提供实际的解决方案麽?
1.如果是HOST的话,C# 可以实现麽?必须使用Socket?
2.能否提供一个简单的实例,我对Socket的编程不是很懂.再次感谢!!!
shrinerain
2007-12-06
打赏
举报
回复
手工提交会吧?
就是cmd里面 telnet 论坛地址 80
然后按照HTTP 1.1协议,摸黑把字符串打进去就可以了.
shrinerain
2007-12-06
打赏
举报
回复
一般论坛判断, 会检查Referer, 或者Host, 或者cookie.
你手工提交HTTP Post信息给Discuz论坛, 分别修改Referer, Host以及cookie.
看看具体是哪个属性让Discuz显示这个错误信息.
如果是Referer或cookie好办, 如果是Host的话, HttpWebRequest不能修改Host.
你得采用最底层的方法, 直接Socket.
zhyindividual
2007-12-06
打赏
举报
回复
在顶一次,要再没人解决,也只有结贴了:(
blestcc
2007-12-05
打赏
举报
回复
這樣的話可能不是來路地址不正確的問題,應該是在服務器端增加了其他驗證.
你還可以自己構建http的資料包post到服務器來僞造來路地址試一下,不過我想結果應該還是一樣的
zhyindividual
2007-12-05
打赏
举报
回复
感谢楼上朋友的回复
我的想法是 ,直接在IE里回复是可以的,那么也就是说是判断了来路地址,POST数据看了,没什么特别的地方.不知道有哪位碰到并解决过这个问题,望分享下.
zhyindividual
2007-12-04
打赏
举报
回复
没人回啊?还是没人看到???
zhyindividual
2007-12-03
打赏
举报
回复
To楼上的>>
感谢回复,不过这个不是关键问题.
继续等待...
hblhshb
2007-12-03
打赏
举报
回复
如果验证是cookie的话还好说,如果是Session验证的,还是放弃吧,好像没什么办法,帮你顶
zhyindividual
2007-12-03
打赏
举报
回复
再次顶一下,期待解决.
zhyindividual
2007-12-02
打赏
举报
回复
感谢大家的回复,顶下,希望遇上在这方面有研究的朋友予以解惑。。
aoxin
2007-12-02
打赏
举报
回复
来路地址是由服务器去判断的,所以在未知服务器判断规则的前提下是很难完成的..但却可以多试几个.
至于自动回复嘛,,,现在很我论坛都有验证,,这个是最难搞的...
龙宜坡
2007-12-02
打赏
举报
回复
关注下,没做过!
zhyindividual
2007-12-02
打赏
举报
回复
TO>>blestcc:
1.感谢你的回复。Referer属性我知道,除此以外还有其他方法没?其实我问这个问题是由于第2个问题的原因,我使用了这种方式,不过貌似没达到预期的效果。
2.o(∩_∩)o...,如果是使用WebRequest的话,代码都差不多。其实我的实际情况是这样的。
这也算回复 FlashElf 朋友对问题2的疑问。
我买了个火车头的采集器,不过当对Discuz论坛进行自动发布时得到如下提示:
您的请求来路不正确或验证字串不符,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。
网上搜索了一阵,貌似很多这样的问题,但都没有确切的解决方案,所以有此一问,希望各位朋友能够予以解惑。谢谢。
lwl0376
2007-12-01
打赏
举报
回复
关注
曲滨_銘龘鶽
2007-12-01
打赏
举报
回复
1、如果你说的 来路地址 是“引用页”的话设置 HttpWebRequest.Referer
2、问题比较....,怀疑楼主居心不良拒绝回答 哈哈
blestcc
2007-12-01
打赏
举报
回复
因為以前是在簡體系統上寫的,現在用的是繁體系統,所以注釋部分亂碼,無視注釋就OK了
加载更多回复(1)
数据采集
介绍
数据采集
,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。
数据采集
技术广泛应用在各个领域。比如摄像头,麦克风,都是
数据采集
工具。被采集数据是已被转换为电讯号的各种物理量,如...
工业
数据采集
介绍以及几种方式和工具
工业
数据采集
系统(Manufacturing Execution System,制造执行系统),MES 系统是一套面向执行层的生产信息化管理系统它以当前视角向操作人员、管理人员生产过程的全部资源(人、设备、材料、工具和客户要求)的,其着重...
数据体系的四个层次:
数据采集
、数据计算、数据服务和数据应用
1.
数据采集
层 客户端日志采集方案:Web日志采集技术方案和APP端日志采集技术方案。在采集技术基础之上,不同的业务场景会有与之相适应的埋点规范,来满足通用的浏览、点击、特殊交互、APP事件、H5 APP里的H5 Native...
Python 网络爬虫与
数据采集
(一)
Python 网络爬虫与
数据采集
第1章 序章 网络爬虫基础1 爬虫基本概述1.1 爬虫是什么1.2 爬虫可以做什么1.3 爬虫的分类1.4 爬虫的基本流程1.4.1 浏览
网页
的流程1.4.2 爬虫的基本流程1.5 爬虫与反爬虫1.5.1 爬虫的攻与防...
数据采集
及预处理——针对“数据”“采集”“预处理”的理解与解析
数据采集
及预处理 文章目录
数据采集
及预处理前言一、 数据二、 采集1.系统日志采集2.网络
数据采集
3.ETL三. 预处理总结 前言 一、 数据 在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章