linux web linux怎么制作自己的网页

大家好,今天小编来为大家解答以下的问题,关于linux web,linux怎么制作自己的网页这个很多人还不知道,现在让我们一起来看看吧!

在Linux下通过WEB认证方式上网

摘要

通过分析 windoze下 Web认证过程,提出在 Linux中用*脚本*实现通过 Web认证方式上网的方法

问题由来

近来,随着宽带入户,越来越多的 ISP采用 Web认证这种接入认证技术。Web认证从用户的角度看,是指用户在浏览器中通过 Web页面输入用户名和密码的认证过程。多数 ISP号称无需客户端软件,实际情况却是:Windoze下用户可以顺利通过 Web认证上网,但 Linux用户却没有这么幸运。

分析原因

什么原因呢?解决问题还需从分析认证页面入手,下面的分析主要针对我这里的情况。在 Mozilla中打开认证页面后,没有显示任何内容。仔细分析认证页面,发现认证页面采用 JavaScripts编写,并且是针对 IE编制的。IE并未完全按照标准使用 JavaScripts。IE对 JavaScripts做了一些扩充,主要有以下几项:

*.cab files for download of binaries;

* document.all;

* element.innerHTML;

...

详情请参阅

IE对 JavaScripts的这些扩充,Mozilla是不支持的,实际上 Mozilla对标准 JavaScripts的支持比 IE好。所以,这些有 IE特点的认证页面 Mozilla等浏览器自然无法通过了。

从用户浏览器的角度看,Web认证除了通过 Web页面输入用户名和密码外,还需要通过 http协议传送客户由 DHCP获得的 IP。有些 ISP在用户登录到认证页面时,由浏览器自动下载.cab文件,然后执行该文件获得用户的 IP,再传给 Web Server。还有些 ISP在用户通过认证后,会在客户端弹出一个计时窗,定时向 ISP发送 keep-alive包。当然,Web认证是一个比较新的方式,还没有形成标准,所以各提供商的方法也不尽相同,所谓各村有各村的高招,你那里的方法就很有可能与我的不同,但道理应该是一样的。根据以上的分析,可以看出 Linux用户自然不可能用非 IE兼容的浏览器直接通过登录 Web认证界面上网啦。

解决方法

好了,问题就在这些 Web页面使用 IE方言的 JavaScripts上,有几种解决方法:

1。使用 Linux下 IE兼容的浏览器,有吗?谁知道请告诉我。

2。使用 wine+ IE的方法,有成功的吗?大家共同分享。

3。如果将这些鸟语改为普通话,我们就可以用 Mozilla等非 IE浏览器通过 Web认证方式上网了。

4。要求 ISP提供支持 W3C标准的认证页面。

5。分析 web认证的原理,编写认证程序。

最理想的方法四,可是我等不急,也不一定能等到,也许你比我幸运。我采取第三种方法,对于方法三,你一定会问:认证页面在 Web Server上,我无权修改,行不通。确实如此,这里有个变通的办法:下载认证页面,按照 JavaScripts标准修改并保存在本地,每次上网前用本地经过修改的 Web认证页面而非 Web Server的认证页面就可以了。具体修改方法,参照 中的对照表,找出认证页面使用 IE方言的 JavaScritps,根据对照表提供的修改建议对你的认证页面作出相应修改。对于使用.cab的认证页面,情况就比较复杂。需要分析这个.cab在你的 JavaScripts中的用法,判断它的功能,我这里是用它获得本地 IP。所以,我在本地执行脚本获得 IP来模拟这个功能。似乎.cab多与 IP有关。

一个例子

*以我这里为例,我的使用环境:

ISP:铁通 ADSL

认证方式:Web认证

ISP的接入服务器:华为 Quidway MA5200E/F(具体型号不能完全确定)

Linux:GENTOO 1.4 rc-3

Browser: Mozilla 1.4a/Phoenix 0.5

*在 Linux下用 mozilla(一定要用非 IE浏览器获得认证页面,这话有点多余,但有的用户是在 Window$下调试的),访问 ISP的 WEB认证页面时,浏览器中没有显示任何内容,根本无法输入帐号和密码,更谈不上通过认证。这难不倒咱 linuxer,查看认证页面(/index.jsp)源码,发现这两段 javascript:

复制代码代码如下:

id="PortalClient"

codebase=

...

var clientIp= PortalClient.localIP;

var languagetype= 0;

if((clientIp=="")(clientIp==null)){

window.parent.location.href="/ipError.jsp";

} else{

window.parent.location.href="/queryPort.jsp?ip="+clientIp+"newbl="+languagetype;

}

可以看出它用 PortalClient获得本地的 IP,如果成功,转到 http://你的WEB认证页面/queryPort.jsp?ip=你当前的IP。而 Mozilla不支持它获取 IP(PortalClient,是针对IE的,唉,这个程序编得太短视),看来问题出在这里。既然如此,我们可以手工加上自己的 IP(这个 IP是与 ADSL相联的网卡从 ISP的 DHCP服务器获得的地址)。在 Mozilla地址栏中输入:

--------^^^^^^^^^^^------------------^^^^^^^^^^^

--------你的ISP认证服务器-------------你当前的IP

嗒嗒,登录页面出来啦!

赶快输入帐号,密码,按登录按钮(期待中。。。)。

viva!!!

ISP的首页终于被揪出来啦,在终端中 ping www.gnu.org,ping通,没问题。

*至此,在 Linux下 web认证方式已经完成。方法很简单,每次上网时,在 mozilla的地址栏中输入:

http://你的ISP认证服务器地址/queryPort.jsp?ip=你当前的IP

登录页面出来后,和 IE中的操作过程完全一样。

*当然你可以把这些步骤写成一个脚本,以后简单执行脚本就可以了。

复制代码代码如下:

#!/bin/bash

dhcpcd eth1

phoenix `ifconfig eth1grep inetsed's/^*//'sed's//:/g'cut-f3-d:`&

说明:

eth1是与 ADSL联的网卡名,根据你的实际情况填写。

61.61.61.61是我这 ISP的认证地址。

后面一段是获得 eth1的 ip地址。

注意!一定要用非 IE浏览器获得调试认证页面,因为 IE可以执行认证页面的 JavaScripts,有些认证过程实际上是执行多个页面完成的,IE最后停留的页面不一定是起始的认证页面,你有可能漏掉前面的重要信息,我这里就是这种情况。

另外一种方法

如果你对方法 3不满意,可以用方法 5,继续分析 web认证的原理,编写自己的认证程序。其实搞清原理后,实现的方法更简单,更灵活,而且在 ISP要求客户端定时发送 keep-alive包的情况下,也只能采取这种方法。我是这样做的:

1。用网络分析软件(如:ethereal),抓取正常认证过程的通讯包;

在 windoze下,用 ethereal抓包。注意抓包时,除了 IE不要启动其它产生网络通讯的程序,以免产生干扰数据;保存这些通讯包。

2。分析所抓包的内容;

只要看一眼 web认证过程产生的通讯包,你就明白我为什么说这种方法更简单了。简单讲,web认证方式实际是客户端用 http协议向 ISP发送用户名、密码和 IP等内容的过程。客户端读取认证页面;将填写好认证页面表格发送到 ISP的认证服务器。过程就这么简单。

3。编写生成这些包的程序;

用任意一个支持 http协议的语言或工具,编写向认证服务器 POST认证页面中 form的程序即可,甚至读取认证页面都不需要。我用 curl和 python各做了一个。如果你略微了解 http协议,只要找到认证页面中向服务器 POST用户名、密码等数据的 form,然后转换为你采用语言的语法格式就可以了,根本不需要分析认证页面中繁杂的 Javascripts。对计时窗发出的 keep-alive包也采用同样的方法。

例子:

*认证页面中的

复制代码代码如下:

用户名:

密码:<inputname="password" type="password">

*用 curl写的一个脚本:

bash/shell Code复制内容到剪贴板#!/bin/bash/etc/init.d/myiptablesstart dhcpcdeth1 MYIP=`ifconfigeth1grepinetsed's/^*//'sed's//:/g'cut-f3-d:` echo$MYIP UN=88888888 SERVER=61.61.61.61 curl--tracetrace.txt-A'Mozilla'-d"username=$UN&password=8888&localip=$MYIP&connectname=&connecttype=-1"http://$SERVER/secu/webLogin.jsp

说明:curl是一个用 url语法传输文件的命令行程序,支持 http,ftp等协议,类似 wget。

上例中,curl的命令行参数-A指明客户端的类型,这是服务器为了安全,需要指明。Mozilla或 IE都可以,我更愿意用 Mozilla。-d是必需的,表示用 POST方法。-d后的内容就是用户名、密码 IP地址等信息,根据你的认证页面中 form的 input项目填写,内容与其保持一致,参数间用&分开。后面是认证页面的地址。执行这个脚本后,返回 200 OK,表示认证成功,否则,仔细检查-d后的参数是否正常,地址是否正确。

*用 python写的认证程序:

复制代码代码如下:

#!/usr/bin/env python

import httplib, urllib

params= urllib.urlencode({'connectname':'',

'connecttype':-1,

'consumeright': 0,

'separatecard': 0,

'localip':'192.168.000.000',

'IsIndex': 0,

'username': 88888888,

'password': 8888})

headers={'Accept':'text/html','User-Agent':'Mozilla',

'Content-Type':'application/x-www-form-urlencoded'}

server='61.61.61.61'

path='/secu/webLogin.jsp'

conn= httplib.HTTPConnection(server)

conn.request("POST", path, params, headers)

r1= conn.getresponse()

print r1.status, r1.reason

data1= r1.read()

print data1

conn.close()

产生 keep-alive包的程序

复制代码代码如下:

#!/usr/bin/env python

import httplib

def testHttplib(server, path):

req= httplib.HTTP(server)

req.putrequest('GET', path)

req.putheader('Accept','text/html')

req.putheader('User-Agent','Mozilla')

req.endheaders()

ec, em, h= req.getreply()

fd= req.getfile()

return fd.read(),(ec, em)

myip='192.168.000.000'

server='61.61.61.61'

path='/ClientProcess.jsp?MsgType=1&ISNNO=1001&LocalIP='+ myip

# print'testing"%s%s"'%(server, path)

dataHttplib, result= testHttplib(server, path)

# print"data length(httplib):", len(dataHttplib), result

# print dataHttplib

说明:

python是一个功能强大的脚本语言,与 Perl类似。正如你看到的,它和 curl完成同样的工作,但更优雅。这里要注意别漏掉'User-Agent'和'Content-Type'内容,我在这个上面浪费了不少时间。其它与 curl的说明一样。

最后,将下面内容加到 crontab中,保证每 5分钟向 ISP发送一个 keep-alive包,模拟计时窗功能。

*/5****/home/zest/keepalive.py

方法 5的总结:

*方法简单,思路清晰

*适应性广

*脚本实现,脱离浏览器和图形环境,更适于需要自动登录的环境(例如,自建的服务器)

一些成功的例子:

* whz81朋友

南京电信

* zest就是我

西安铁通

*你的位置

欢迎你与大家共同分享你的成功经验

相关的链接:

*从特有的 DOMs和 Markup转移到 W3C标准。

后记

这篇小文是我在解决 Linux下 Web认证方式上网问题时的一些文字总结。由于本人的能力有限以及环境的限制,文中的内容肯定相当粗浅,会存在一些错误,希望各位能够批评指正,共同完善这篇文字。这里,我希望尽量说明解决问题的思路和方法,而不是只给出结果。授人以鱼,不如授人以渔。另外,这篇文字是两个时期完成的,方法 3是在四月完成的。最近,七月,我的 ISP改变了 Web认证页面,所以产生了方法 5。为了保持延续性,没有删除方法 3,所以比较罗嗦。

最后,欢迎大家分享自己的成功经验。

Linux怎么搭建Web服务器

1,基于apache的web服务器基础搭建:

(1)实验环境:一台ip为192.168.10.10的rhel5.9主机作为web服务器,一台ip为192.168.10.15的win7主机作为测试机

(2)查看服务主机软件是否安装

[root@ser1~]# rpm-q httpd httpd-manual httpd-devel

package httpd is not installed

package httpd-manual is not installed

package httpd-devel is not installed

(3)安装软件包

[root@ser1~]# yum install-y httpd httpd-manual httpd-devel

(4)启动服务

[root@ser1~]# service httpd start

启动httpd: [确定]

[root@ser1~]# chkconfig httpd on

(5)在win7上测试,无网页缺省下显示红帽测试页

<报错页面存放位置/var/www/error/noindex.html>

(6)打开配置文件

[root@ser1~]# vim/etc/httpd/conf/httpd.conf

可获得以下重要字段:

目录设置:

<Directory目录>....</Directory>

访问位置设置:

<LocationURL>....</Location>

虚拟主机设置:

<VirtualHost监听地址>....</VirtualHost>

常用的全局设置参数:

ServerName本站点的FQDN名称

DocumentRoot网页文档的根目录:缺省/var/www/html/

DirectoryIndex默认索引页/首页文件:一般设为index.html index.php

ErrorLog错误日志文件的位置

CustomLog访问日志文件的位置

Listen监听服务的IP地址、端口号

ServerRoot服务目录:/etc/httpd/

Timeout网络连接超时,默认 300秒

KeepAlive是否保持连接,可选On或Off

MaxKeepAliveRequests每次连接最多处理的请求数

KeepAliveTimeout保持连接的超时时限

Include可包含其他子配置文件:/etc/httpd/conf.d/

(7)创建测试网页

[root@ser1~]# vim/var/www/html/index.html

<h1>

This is a test page!!!

</h1>

~

(8)win7下测试,主页变为测试网页

2,基于apache的web服务器的访问控制:

(1)web服务的地址限制

I,rder配置项,定义控制顺序

allow,deny先允许后拒绝,缺省拒绝所有;冲突时,拒绝生效;allow不设置,拒绝所有

deny,allow先拒绝后允许,缺省允许所有;冲突时,允许生效;deny不设置,允许所有

II,Allow/Deny from配置项,设置权限

Allow from地址1地址2....

Deny from地址1地址2....

配置如下:

[root@ser1~]# vim/etc/httpd/conf/httpd.conf

331#

332 Orderallow,deny

333 Allowfrom 192.168.20.0/24

334

335</Directory>

[root@ser1~]# service httpd restart……重启服务

停止httpd: [确定]

启动httpd: [确定]

在win7上测试,测试完成并还原配置文件:

关于更多Linux的学习,请查阅书籍《linux就该这么学》。

Linux下Web服务器架设攻略

今天我们来看看如何将Web服务器架在Linux系统下。

LINUX系统中常见的有:CERN、NCSA、Apache三种方式,一般最常用的方法就是用Apache。此种方式特点明显,配置简明,具有最大的对系统兼容性,以下是用此方式配置基于Linux的WEB服务器的全过程。

一. Apache服务器慨述。

其特征是显著的:可以运行于所有计算机平台,自然包括UNIX/LINUX系统;集成代理服务器和Perl编程脚本;对用户的访问会话过程跟踪;可对服务器日志定制;还支持虚拟主机及HTTP认证等等。再配合LINUX系统本身的强大,我们没理由不选择Apache。

二.安装Apache。

一般说来,所有Linux版本应该包含有此软件包的安装,如果你在安装Linux系统没有安装此软件包,可以从安装光盘或是网站上找到其安装文件(注意网上有两种版本:一种是下载后需重新编译的源代码,一种是只需解压就可使用的可执行文件),然后执行安装即可。

1.如果你下载的是可执行文件包如:apache_1.2.4.e.tar.gz(当中的数字视你下载的版本而定,此为举例),那这就相对简单,比较适合对Linux编译不熟悉的初级用户,只需执行:tar xvzf apache_1.2.3.4.tar.gz即可完成安装。

2.如果下载的是源代码如:apache_1.2.4.rpm,则先用rpm–ivh apache_1.2.4.rpm安装,然后在src目录下执行“./configure”;接着执行“make”命令编译Apache;接着将编译好的可执行文件复制到/etc/httpd/bin目录下;再将Apache的配置文件:httpd.conf、access.conf、srm.conf和mime.types复制到/etc/httpd/conf目录下,才算完成安装。

三.配置Apache,实现WEB服务。

其实,到现在你的Linux已经开始WEB服务了,你要做的只需将Linux系统连入互联网,然后将主页存放于“/home/httpd”目录下即可。但为了让此WEB服务器更有效率的工作,我们还需对其作些设置,具体需要配置的其实就是刚才复制的那4个文件。以下对其主要的两个配置文件httpd.conf和access.conf作些说明:

1. httpd.conf.

此文件是主配置文件,主要用来设置服务器启动的基本环境,也就是说它负责安排WEB服务器怎样运行。其相关设置参数为:

ServerTypestandalone/inetd:此选项作用就是指定以何种方式运行WEB服务器。其中standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务;其效率更高。主要是设置主服务器进程侦听的特定端口地址,方法为:Port[number](缺省为80)。

而inetd模式相对standalone来说它更安全,此模式也是RedHat Linux运行Apache的默认方式。如果你的版本不是RedHat,则需在/etc/inetd.conf文件里加入以下一新行:httpd stream tcp nowait httpd/etc/httpd/bin/httpd–f/etc/httpd/conf/httpd.conf;然后在/etc/services文件里同样添加一新行:httpd 80/tcp httpd即可。

ErrorLog:用来指定错误记录的文件名称和路径。格式如:ErrorLog/var/httpd/error.log。

ServerRoot:用来指定将服务器的配置及日志文件存于何处。格式如:ServerRoot/etc/httpd。

Server Admin:设置WEB管理员的E-Mail地址.格式如:Server AdminXXX@XXXX.com。

2. srm.conf

这是Apache的资源配置文件,作用为告诉服务器你想在WWW站点上提供的资源及如何提供,其主要参数为:

DocumentRoot:用来指定主文档的地址。格式如:DocumentRoot/home/httpd/html。

DirectoryIndex:跟windows平台的IIS设置一样,用来指定首页文件的名称。大家都知道,首页一般都以“index.html”或“index.htm”作为文件名。当设置为这两种文件名之后,只要用户发出WEB请求,即将调入以“index.html”或“index.htm”命名的主页。格式如:DirecotryIndex index.html index.htm。

经过以上简单的配置后,你的WEB服务器已经具备基本的功能了。接下来要做的就是重启WEB服务,使刚才的配置生效,我们可以用以下命令来完成:

/etc/rc.d/init.d/httpd restart

最后,我们来看看基于Apache服务的安全方面。Apache服务器通过认证系统能控制哪些主机可以访问某些特定的站点。具体来说,它通过两种方式来实现:

一种是基于主机地址的认证,但由于目前大部分上网用户使用的都是动态地址,因此此种方式并没多少实际意义;

另一种方式是基于用户名/口令的认证方式,不言而喻,此种方式更适合如今的网络状况,而对于具体的用户名/口令认证实现,不在本文讨论范围,大家可以参阅相关资料作进一步学习。

阅读剩余
THE END