我正在开发一个Web爬虫,它可以为不想编入索引的站点编制索引.
我的第一次尝试:我编写了ac#crawler,遍历每一页并下载它们.这导致我的IP在10分钟内被其服务器阻止.
我将它移动到亚马逊EC2并编写了一个运行大约50个实例的分布式python脚本.这仍然高于启动我的门槛.每月花费约1900美元......
我回到了我最初的想法并把它放在缩短版的TOR网络上.这很有效,但速度很慢.
我没有想法.如何通过他们阻止我重复请求.
我说"阻止"他们实际上是在一个肯定存在的页面上给我一个随机的404未找到的错误.它是随机的,只有在我在一小时内传递大约300个请求后才开始发生.
我正在尝试基于以下mongodb查询在我的mongodb集合中查询用户:
db.users.find("boxes":{"$elemMatch":{"a":"foo","b":"bar"}})
如果我直接用mongodb查询,这是有效的.它返回任何具有a ="foo"和b ="bar"的框的用户.
我如何在mongoosejs中查询?我尝试过使用User.find().elemMatch它但不起作用.无论如何,这似乎只是预测结果.原来的mongodb查询确实对我有用,我只需要能够在mongoosejs中复制它.有任何想法吗?
我正在研究一个新的合同项目.通常我会使用c#asp.net和razor.问题是,我的投资组合说.C#C#C#C#一遍又一遍.我认为投资组合明智,可能会有所帮助.另一方面,功能语言似乎是一种有趣的方法,因为就控制器而言,asp.net MVC3非常注重功能.那么,有没有人试过使用F#来做这个并且结果是有用的还是只是妨碍了?
我问,因为控制器似乎从功能上受益,而模型似乎受益于面向对象的语言.
我不想修改帧的以太网部分,但我需要修改IP数据包和帧的数据部分.
我尝试发送一个原始帧,它仍然输入IP信息.我基本上需要发送一个帧而不定义端点,除了我发送的位.
这是我得到的:
Socket s = new Socket(AddressFamily.Unspecified, SocketType.Raw, ProtocolType.Raw);
EndPoint ep = new IPEndPoint(IPAddress.Parse("205.188.100.58"),80);
s.SendTo(GetBytes(""),ep); //im sending nothing, so i expect the frame to just have ethernet stuff
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, false);
Run Code Online (Sandbox Code Playgroud)
我的问题: 使用SendTo添加帧的IP部分,我不希望这样,因为我想欺骗源IP.使用"发送"将崩溃,因为它说我需要指定一个端点.有关该怎么办的任何建议?我只是想发送一个数据包并自己定义IP部分和数据部分.
注意:不,我没有进行DOS攻击,我需要这个才能合法使用!
我知道如何定义IP部分,它只是在没有生成IP部分的情况下实际发送数据.
我有以下两个类:
book_page
章节
我有一系列book_pages及其章节标题.我希望能够按照"chapter_title"在"章节"集合中出现的顺序对book_page集合进行排序,然后按"章节内的顺序"字段排序.
我尝试在chapter_title列上编写连接,然后按chapter.order排序,然后按page.order_within_page排序,但没有运气.有什么建议?
我的代码:
var ordered_pages= from chapter in chapters
join page in book_pages
on chapter.chapter_title equals page.chapter_title
select new{order = chapter.order,page = page}
var finalList = from row in ordered_pages.OrderBy(c => c.order).ThenBy(p =>p.page.order_within_chapter)
select row.page;
Run Code Online (Sandbox Code Playgroud)
这实际上并不起作用,即使它确实很难看.我错过了使用LINQ执行此操作的方法吗?
我正在尝试使用以下命令下载整个网页
wget -p -k www.myspace.com/
Run Code Online (Sandbox Code Playgroud)
这确实下载了该目录下的页面和任何图像或脚本,但我正在试图找出如何下载该页面以完全脱机查看.如何在www.myspace.com的源代码中链接每个图像,脚本和样式表,包括外部链接?
我在使用这段代码时遇到了一些麻烦.QByteArray :: number应该从哈希中获取QByteArray并将其转换为十六进制,但结果比我预期的要短得多.我以为两个输出都应该是一样的.我认为这与指针演员有关,但我不明白演员表现得如何做得足以看出如何制作价值.
任何人都可以解释为什么这两行输出不同的结果?最好用数学术语表示.
码
QCryptographicHash hash(QCryptographicHash::Sha1);
hash.addData("some string to hash");
qDebug() << QByteArray::number(*(qlonglong*)hash.result().data(), 16);
qDebug() << hash.result().toHex();
Run Code Online (Sandbox Code Playgroud)
输出:
"89bde3ca56c83c47"
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
Run Code Online (Sandbox Code Playgroud)
预期产出:
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
Run Code Online (Sandbox Code Playgroud)
注意:我的实际问题是在36,而不是16,但有一个方便的.toHex方法,使这更容易显示.