注册 登录
编程论坛 VB6论坛

vb编程修改网站上的某个文本内容

luohaiping3 发布于 2015-05-19 17:21, 1248 次点击
例如网站:http://www.,实现我在Text1.text修改的内容写入到test.txt文档中去
16 回复
#2
风吹过b2015-05-19 20:05
这个网站是你控制吗?
是,改用 asp 去做。
不是,改用黑客手段去做。
#3
luohaiping32015-05-26 10:33
回复 2楼 风吹过b
网站是我自己控制的,我想用vb做这个
#4
风吹过b2015-05-26 16:52
网站里,由一个 ASP 程序负责更新这个 TXT 文件,
然后 你VB程序 负责远程提交数据给这个ASP程序,由ASP网页更新这个TXT文件。
读写 TXT文件,使用 FSO 组件。

ASP 语言,使用的就是 VBA 的语法,与VB6 非常相似。你要相信你能行的。

这个页面,使用孤立页面,不要链接到其他任何页面上去,防止被蜘蛛抓走。然后使用参数形式提交。
如果内容不多的情况下,可以考虑 GET 方式提交,如果内容较多,容易超过 255字节,那就必须使用 PUT 方式提交。

建议 URL 写如下:
GET方式: httP://XXX.XX.XX/uptxt_abui9234ag.asp?f=osdfb&d=修改的内容
乱码都是为了不让别人猜出来的。多带几个无效的参数,但这几个参数一定校验,不符合就拒绝写入,但提示时,照样提示修改成功以迷惑人的。
 
PUT方式,只是把修改内容放到 封包的最后进行提交建议都同上。
#5
luohaiping32015-05-27 10:09
回复 4楼 风吹过b
VB程序 负责远程提交数据给这个ASP程序?这个怎么做,有相应的例子没
#6
风吹过b2015-05-27 10:48
如果是 GET 方式,就使用 WinHttp 对像来提交吧,使用下面的函数。
然后生成 URL ,进行提交。
这个函数只适合于 GET 方式修改。url长度是有限制了。具体与 浏览器、服务器有关。这里应该是使用的IE核心吧。

Public Function GETHTML(url As String)
'使用 a814153 的代码 进行封装
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", url, False
        .Send
        GETHTML = .responsetext
    End With
End Function

如果是 POST ,我目前只知道使用 webbrows 的方式。其他我没用过。
#7
风吹过b2015-05-27 10:53
找到一个 PUT 的函数,你照着改吧

Private Function POST(spost As String)As Boolean
  'This is the Sub Script which will post the data to
  'the XXX Portal, The Payload is the Data which is the actual data
  'That is being sent to the XXX Data Server

  'On Error Resume Next
  Dim streamtext As Scripting.TextStream
  Dim http As WinHttp.WinHttpRequest
  Dim sstatus As String
  Dim sdescription As String
  
  Set http = New WinHttp.WinHttpRequest
  http.Option(WinHttpRequestOption_SslErrorIgnoreFlags)= 13056

  'Below is the B2B Portal Address
  http.Open "POST", "https://XXX.XXX.XXX.XXX/XXX/XXX"
  http.SetRequestHeader "Content-Type", "text/xml"
  http.SetRequestHeader "Content-Length", LenB(spost)
  'Below are the Username and Password, which are Hardcoded into the Script
  http.SetCredentials "XXX", "XXX", 0
  http.Send spost
  
  sstatus = http.Status
  Select Case sstatus
 Case Is = "200"
  POST = True
 Case Else
  POST = False
  End Select
End Function
#8
风吹过b2015-05-27 11:07
ASP 部分,使用 FSO 。网上找了,他里面 fid 是写入的文件名,也是从 URL 中获取的。
Request.Form       从表单获取,PUT 方式适用。
request.QueryString   从URL上获取,GET方式适用。但在PUT方式中,如果在URL带上该参数也能获取到。
request            从表单或url获取,有一个优先级,但具体忘了那个优先。


-------------网上找到 ASP 使用 FSO 写入文件的例子--------------------------
(三)使用FSO写入文件
<%
content = Request.Form("content") '表单提交的数据
fid = request.QueryString("fid") '请求参数,指向文件存取相对根目录的路径
'response.Write("fid = "&fid) '调试使用,输出请求参数
'response.Write("content = "&content) ’调试使用,输出表单提交数据
Set fso = Server.CreateObject("scripting.FileSystemObject") '创建FSO对象
Set fileObj = fso.opentextfile(server.mappath(fid),2,true) '使用FSO创建文件写入对象
fileObj.Write content '向文件写入数据,覆盖形式写入
fileObj.close '推送内容写入并关闭写入通道
response.Write("保存成功")
Set fileObj = nothing
Set fso = nothing
%>
#9
luohaiping32015-05-27 11:07
回复 7楼 风吹过b
这样吧,我把我的asp程序贴出来你帮我看下vb应该怎么写,行不

[ 本帖最后由 luohaiping3 于 2015-5-28 13:25 编辑 ]
#10
luohaiping32015-05-27 15:07
回复 8楼 风吹过b
怎么做,帮帮忙吧,我不懂得怎么用vb来向asp程序提交数据,asp程序我已经贴出来了
#11
风吹过b2015-05-27 16:20
1、这个ASP 需要跨服务器验证,最少需要 3个HTTP服务器。无法搭建调试环境。
2、这个ASP提交后会 产生 302 跳转标志,造成程序出现问题。也就是你这个ASP应该是用浏览器来访问的,而不应该使用程序来访问他。
调用方式  Msgbox GETHTML("http://XXX.XXX.XXX/XXX.asp?url=" & "XXX" & "&ip=" & "XXX")
结果是错误,提示产生了 302 跳转标志
-------------------------------------
也许你打算用 IE 内核的 webbrows来开发,也许会好一点。
WebBrowser1.Navigate http://XXX.XXX.XXX/XXX.asp?url=" & "XXX" & "&ip=" & "XXX"

-------------------------------------
从这个ASP来说,与你问的问题不对。
你问的是 如何修改这个文件,你给出的ASP是 跨服务器验证,写入该文件,然后跨服务器跳转到。
抱歉,根据这ASP写程序的话,建议你 去查找开源的 浏览器源代码,然后在浏览器的代码上修改还更快一点。
#12
风吹过b2015-05-27 16:24
按你问的问题,仅修改这个文件,那么 对应的ASP应该是这样的。

<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
'强制浏览器不再缓存Web页面
%>  

<%
    dim ip
  ip=request.QueryString("ip")'获取连接参数
       writeip(ip)


Function writeip(wip)
    Dim fs,ts
    Const ForReading =1, ForWriting = 2
    voteincdir = server.mappath("OAUrl.txt")
    set fs = CreateObject("Scripting.FileSystemObject")
    set ts = fs.CreateTextFile(voteincdir, True)
    ts.Write wip
    ts.close
    response.write "OK,IP设置成功。</br>"
End function
%>


提交命令就是这样的:
MsgBox GETHTML("http://XXX.XXX.XXX/XXX.asp?ip=" & "XXXXXXX")
#13
luohaiping32015-05-27 16:52
回复 12楼 风吹过b
这个这样应该可以吧   我主要是不知道在vb上怎样利用这个asp程序,还请帮帮我vb怎么写

[ 本帖最后由 luohaiping3 于 2015-5-28 13:27 编辑 ]
#14
风吹过b2015-05-27 17:29
line ="http://" & wip & ":88"  'OA的要验证
    response.Redirect (line)'打开页面

你加了二行,就只能使用 WebBrowser 控件去提交了。

放入 WebBrowser,访问该 地址的方法
WebBrowser1.Navigate "http://XXX.XXX.XXX/XXX.asp"
--------------------------
WebBrowser  就是一个 使用 IE核心 的浏览器。
#15
luohaiping32015-05-27 17:38
回复 14楼 风吹过b
问题是用这个怎么写啊WebBrowser,我不太会这个
WebBrowser1.Navigate http://XXX.XXX.XXX/XXX.asp?url=" & "XXX" & "&ip=" & "XXX"
这个参数怎么写??不懂

[ 本帖最后由 luohaiping3 于 2015-5-28 15:45 编辑 ]
#16
风吹过b2015-05-27 18:01
WebBrowser

引入 WebBrowser 控件,对应的名字是: Microsoft Internet Controls,引入后的名字叫 WebBrowser
然后到窗体上放一个,

调用就是: WebBrowser1.Navigate "http://XXX.XXX.XXX/XXX.asp"

就是自己做个简单的IE。
#17
hfq13142015-06-29 23:03
怎么批量修改网站上的某个文本内容??
1