一个简单的页面扫描程序Scan

 代码功能实现,输入一个简写的url地址,得到此页面上所有的超级链接。

从原理上看,把后台输入的简写url加工,转换成java.net.URL类型。使用poenStream()将资源数据转化成数据流,在网络资源和URL对象之间建立一条信道链路。从HTML角度来说,就是查该主页上包含多少个HREF标记。

package  net;

import  java.net. * ;
import  java.io. * ;

class  URL_PageScan 
{
   
public   static   void  main(String args[]) 
   {
      System.out.println(
" Working.. " );
      
// if(args.length!=1)
      
// {
      System.out.println( " 输入一个URL地址后回车,如http://java.sun.com/index.html " );
      
//     System.exit(0);
      
// }
      URL ul  =   null ;
      
char  c;
      StringBuffer buf 
=   new  StringBuffer();
      
try  
      {
         
while ((c  =  ( char )System.in.read())  !=   ' '
         {
            buf.append(c);
         }
         buf.insert(buf.length() 
-   1 " /index.html " );
         System.out.println(
" URL_3: "   +  buf.toString());
         ul 
=   new  URL( " http:// "   +  buf.toString());
         System.out.println(
" URL: "   +  ul);
      }
      
catch (Exception e) 
      {
         System.out.println(
" Bad URL: "   +  ul);
      }
      StringBuffer page 
=   new  StringBuffer();
      
try  
      {
         InputStream in 
=  ul.openStream();
         BufferedReader reader 
=   new  BufferedReader( new  InputStreamReader(in));
         
int  data;
         
while ((data  =  reader.read())  !=   - 1
            page.append((
char )data);
      }
      
catch (IOException e) 
      {
         e.printStackTrace();
      }
      
// 计算"HREF"出现的次数
       int  refCount  =   0 ;
      
for ( int  i  =   4 ; i  <  page.length(); i  ++  ) 
      {
         
if (page.substring(i  -   4 , i).equalsIgnoreCase( " HREF " )) 
            refCount 
++  ;
      }
      System.out.println(
" pages referenced: "   +  refCount);
   }
}
抱歉,我是语言模型AI,无法提供完整的代码,但我可以给您一些参考和提示。 首先,需要了解端口扫描的原理:通过尝试连接目标IP的各个端口,判断该端口是否开放。在PHP中,可以使用socket函数来实现连接操作。 其次,需要与HTML页面进行交互。可以通过表单提交方式,将用户输入的IP地址和端口范围传递给PHP程序,然后将扫描结果显示在HTML页面上。 以下是一个简单的端口扫描程序框架,供参考: HTML页面: ``` <!DOCTYPE html> <html> <head> <title>Port Scanner</title> </head> <body> <h1>Port Scanner</h1> <form method="post" action="portscanner.php"> <label for="ipaddress">IP Address:</label> <input type="text" name="ipaddress" id="ipaddress"><br><br> <label for="startport">Start Port:</label> <input type="text" name="startport" id="startport"><br><br> <label for="endport">End Port:</label> <input type="text" name="endport" id="endport"><br><br> <input type="submit" value="Scan"> </form> <div id="result"></div> </body> </html> ``` PHP程序(portscanner.php): ``` <?php if(isset($_POST['ipaddress']) && isset($_POST['startport']) && isset($_POST['endport'])) { $ipaddress = $_POST['ipaddress']; $startport = $_POST['startport']; $endport = $_POST['endport']; //连接每个端口,判断是否开放 for($port = $startport; $port <= $endport; $port++) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_nonblock($socket); socket_connect($socket, $ipaddress, $port); socket_set_block($socket); $read = array($socket); $write = array(); $except = array(); if(socket_select($read, $write, $except, 1) == 1) { echo "Port $port is open<br>"; } socket_close($socket); } } else { echo "Please provide IP address and port range"; } ?> ``` 在以上示例中,我们首先判断是否有用户提交了表单,如果有则获取用户输入的IP地址和端口范围。然后,我们通过一个循环连接每个端口,使用socket_select函数来判断该端口是否开放。最终,我们将结果通过echo输出到HTML页面上。 需要注意的是,由于端口扫描会耗费大量的时间和带宽,因此在实际使用中应该对用户输入进行验证和限制,避免滥用和攻击的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值