繁体   English   中英

解析在C#或Java中的任何Web浏览器中显示的HTML页面?

[英]Parsing HTML page shown in any web browser in C# or java?

这次我有种有趣而怪异的要求。 我在Facebook上有我的帐户,众所周知,它在玩游戏中非常受欢迎。 我遇到的应用程序之一是Click游戏,在该游戏中,一个人必须在10秒的时间内尽可能多地单击。 好吧,一个朋友说他用C#创建了一些.Net代码,它将使单击按钮的过程自动化。 真的有可能还是他在虚张声势? 如果是这样,有人可以告诉我如何吗? 我个人还没有看到他这样做。 但是他在我的其他朋友面前提到了这件事。 任何准则都将有所帮助。 我花了很大的力气在10秒内单击了92次,他说使用一些C#代码,他保持了一个循环,并单击了1500次。 现在我在他面前有点自卑:p。 他的1500只有92。

提前致谢 :)

甚至这段代码也不起作用。 我什至看不到对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。

在.net中,您可以使用InvokeScript API与WebBrowser控件中的页面脚本进行交互,并可以通过Document属性与页面DOM进行交互。

我已经看过您在说什么,我也知道在该游戏中拥有可笑数字的人。 他们最有可能做的是操纵传递回服务器的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坐标(可能是通过在执行后将click例程延迟几秒钟,因此您有时间将鼠标移至按钮),就可以完成您要执行的操作。

请注意,我不认为这是人们在游戏中获得如此大量数字的方式。 您很可能可以通过FireBug或类似的开发人员工具编辑JavaScript调用,然后将假数据发送回服务器。

Selenium这样的测试框架可以用来应对这样的挑战

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM