解析C#或java中任何Web浏览器中显示的HTML页面?
这次我有一种有趣而奇怪的要求。我在Facebook上有我的帐户,大家都知道它在玩游戏时非常受欢迎。我遇到的其中一个应用是点击游戏,其中一个人必须在10秒内点击尽可能多的次数。好吧,一位朋友说他在C#中创建了一些.Net代码,可以自动完成点击按钮的过程。这是真的可能还是他在虚张声势?如果是这样,任何人都可以告诉我如何?我个人并没有看到他这样做。但他在我的其他朋友面前提到了这件事。任何指导方针都会有帮助。我花了很多努力在10秒内点击了92次,他说使用一些C#代码,他只是保持一个循环,并点击了1500次。现在我在他面前感觉自己有些低下:p。只是92对他的1500解析C#或java中任何Web浏览器中显示的HTML页面?
感谢提前:)
即使这个代码不起作用。我看不到我的网页在Facebook上做甚至一个单一的点击: -
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData,int dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
for (int x = 0; x < 1000; x++)
{
for (int y = 0; y < 600; y++)
{
mouse_event((uint)MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTDOWN, (uint)x, (uint)y, 0, 0);
}
}
}
也许这是行不通的,因为鼠标点击发送到OS不是Facebook。
我已经看到你在说什么,我也知道在那场比赛中有荒谬的数字的人。他们所做的大部分工作是操纵传回服务器的JavaScript调用,并转发一个虚假号码。
但是,可以在.Net中模拟鼠标点击。这里是触发它的代码:
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
正如你所看到的,我们从鼠标的当前位置获得X和Y位置;不过,只要知道坐标,就可以在屏幕上的任意位置模拟点击。
如果您在循环中运行此代码,并且您尝试按下按钮的X和Y坐标(可能是在执行后延迟点击例程几秒钟,以便您有时间移动鼠标移动到按钮所在的位置),就可以完成你想要做的事情。
请注意,我不认为这是人们如何在游戏中获得如此大的数字。您很可能可以通过FireBug或类似的开发人员工具编辑JavaScript调用,然后将假数据发送回服务器。
谢谢rakuo,你的回答非常丰富。但你能告诉我如何编辑JavaScript?这是Facebook的点击游戏的链接:http://apps.facebook.com/swdrfpaoqdordealf/?ref_6w=f_clicks。当我在萤火虫中看到它有很多的JavaScript。我是否需要全部查看他们发送数据的位置? – TCM 2010-07-08 10:46:43
我不想将应用程序添加到我的Facebook,所以请原谅,我无法帮助您找到您要寻找的JS,具体来说。但是要回答你的问题,是的,那是你必须要做的。最有可能的是,在定时器之后的一个AJAX请求(可以倒计时,无论秒数是多少)。另外,你可以尝试的是在你单击时执行的函数中,而不是执行'counter ++;'或者其他操作,你可以执行'counter = counter^counter;',这会给你指数增长。这可能比打乱AJAX更容易。 – rakuo15 2010-07-08 11:00:09
您的C#方法无法正常工作。请看我编辑的帖子。 – TCM 2010-07-08 12:30:15
你的意思是说这是真的可能吗?黑客在Facebook游戏?这仅仅是一种黑客行为而已? – TCM 2010-07-08 10:29:56