我想通过web程序登录一个网站,然后获取里面页面的数据,可以么?谢谢!

iStringTheory 2004-08-25 09:17:06
具体是这样的:

登 录
我的程序-------->第三方web网站(需要用户名、密码登录)------>获取目标网站内部页面的数据

这整个过程都是通过程序完成的,请问能否可行?谢谢!
...全文
611 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangzixp 2004-09-04
  • 打赏
  • 举报
回复
要获取session name很容易。随便在网上down一个HTTP监控软件,监控一次你正常登陆该站的过程就可以了。
iStringTheory 2004-08-28
  • 打赏
  • 举报
回复
谢谢~~~
piner 2004-08-27
  • 打赏
  • 举报
回复
以前写的一个class,可以根据自己的需要做调试
piner 2004-08-27
  • 打赏
  • 举报
回复
<?php
class curl
{
var $ch = 0;
var $time = 3; //尝试判断URL正确性次数
var $urlRight = false; //URL是否正确
var $content; //官方返回信息
var $errMsg = ""; //返回的错误信息

// 构造函数
function curl()
{
$this->init();
}
// 初始化curl
function init()
{
$this->ch = curl_init();
}
// configure protocol
function get_Protocol($prot)
{
$protocolArr = explode(":", $prot);
$protocol = strtolower($protocolArr[0]);
return $protocol;
}

// 设置次数
function setTimes($times) {
$this->time = ($times > 0) ? $times : $this->time;
}

// 获取页面
function getPage($url, $header = 0) {
if (! $this->ch)
{
$this->errMsg = "初始化对象失败!";
return;
}
if ($this->checkURL($url) != 1)
{
$this->errMsg = "无效的URL路径!";
return;
}

curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 1);

if ($this->get_Protocol($url) == 'https')
{
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
}

if($header) {
curl_setopt($this->ch, CURLOPT_VERBOSE, 1);
curl_setopt($this->ch, CURLOPT_HEADER, 1);
}
else {
curl_setopt($this->ch, CURLOPT_VERBOSE, 0);
curl_setopt($this->ch, CURLOPT_HEADER, 0);
}

curl_setopt($this->ch, CURLOPT_COOKIEJAR, "-");
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_TIMEOUT, 180);

return curl_exec($this->ch);
}

// 登录
function login($url, $fields, $refererURL=null)
{
if (! $this->ch)
{
$this->errMsg = "初始化对象失败!";
return;
}
/*
if ($this->checkURL($url) != 1)
{
$this->errMsg = "无效的URL路径!";
return;
}
*/
if( $refererURL )
{
curl_setopt($this->ch, CURLOPT_REFERER, $refererURL);
}
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 1);

if ($this->get_Protocol($url) == 'https')
{
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
}

curl_setopt($this->ch, CURLOPT_COOKIEJAR, "-");
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($this->ch, CURLOPT_TIMEOUT, 180);

$this-> content = curl_exec($this->ch);
// return $content;
}
// 退出
function logout($url, $referer_url=null)
{
if (! $this->ch)
{
$this->errMsg = "初始化对象失败!";
return;
}

if( $referer_url )
{
curl_setopt($this->ch, CURLOPT_REFERER, $referer_url);
}
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 1);

if ($this->get_Protocol($url) == 'https')
{
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
}

curl_setopt($this->ch, CURLOPT_COOKIEJAR, "-");
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->ch, CURLOPT_TIMEOUT, 180);

$this-> content = curl_exec($this->ch);
// return $content;
}



function getContent()
{
return $this->content; // 官方返回的HTML
}


// close curl
function close()
{
if ($this->ch)
{
curl_close($this->ch);
}
}
}



$curl = new curl;

$url = "http://www.test.com/login.php"; //form 的action
$fields = "username=test&password=test"; //用户名和密码
$curl-> login($url, $fields);
$content = getContent();

echo $content;
?>
iStringTheory 2004-08-27
  • 打赏
  • 举报
回复
自己顶~
surfchen 2004-08-26
  • 打赏
  • 举报
回复
OCR不一定准确的说。。呵呵
fire214 2004-08-26
  • 打赏
  • 举报
回复
对于 如输入验证码的功能,也可以利用模拟键盘来解决,让计算机自己切换到,如清华紫光图像识别就可以把相应的数字、符号提取出来,一切你自己需要操作的,模拟键盘都可以做到,只要自己有一套规矩就好了!
fire214 2004-08-26
  • 打赏
  • 举报
回复
关于这个问题,我研究了很长时间,无非就是让自己获取对方网站的信息,我也考虑了很多种办法,但是由于显示出来的方式不同,有的数据是静态的,有的数据是动态的,有的是数据库里的,弄得乱七八糟,最后我选用了用delphi采取模拟键盘的方法,最愚蠢的 ctrl+a +c +v 的方式先把对方的数据资料都调进我自己的数据库里,发现这个办法虽然笨,但是却无敌,也许你可以参照,目的达到了就好,其余的事情让计算机来做!
surfchen 2004-08-26
  • 打赏
  • 举报
回复
同意 Debian(乌鱼子)。。。。
zairwolfi 2004-08-26
  • 打赏
  • 举报
回复
验证码作为一个图片,不能通过程序分析象素得到它的数字么?我估计应该可以。
BiedySun 2004-08-26
  • 打赏
  • 举报
回复
主要是验证码问题。其实的都好说。
楼主的这个意思。其实极像网易通行证这样的东西来着。
你用HIDDEN来完成。
虚拟一次登陆,至于他用SESSION和COOKIE都无所谓的。因为服务器接到你虚拟信息后,会以为你已经成功进入 。
难点在于 abigfrog(千年精灵)(★JAVA★) 提出的难证码~!!!!
yzs1013 2004-08-26
  • 打赏
  • 举报
回复
用了session或指定了判断访问器类型的文件就无法通过其他方式能正常下载,socket或者curl都不例外
unixdotnet 2004-08-26
  • 打赏
  • 举报
回复
费话啦必须通过界面验证的东西不可能直接pass
yzs1013 2004-08-26
  • 打赏
  • 举报
回复
to liyujie2000(开心的鱼)
可能你漏了http://
<%
$fn=fopen("http://www.sohu.com","r");
$nr=fread($fn,500);
fclose($fn);
preg_match("/<title>(.*)<\/title>/",$nr,$nn);
echo $nn[1];
%>
结果:搜狐首页(我这里访问正常)
Debian 2004-08-26
  • 打赏
  • 举报
回复
拜托,你们都有没有头脑。
如果对方在服务器端应用了如输入验证码的功能,用什么都没戏。
iStringTheory 2004-08-26
  • 打赏
  • 举报
回复
curl怎么应对session验证?
iStringTheory 2004-08-26
  • 打赏
  • 举报
回复
好的,谢谢~
iStringTheory 2004-08-26
  • 打赏
  • 举报
回复
yangzixp(扬子.net):

可否告知什么软件获取网站的session name?是否只需一次获取?还是别的什么?
unixdotnet 2004-08-26
  • 打赏
  • 举报
回复
通过socket或者curl都可以
unixdotnet 2004-08-26
  • 打赏
  • 举报
回复
如果用户浏览器打开了cookie,那么session的传递是通过cookie的,所以你可以臆造,格式参照http协议,内容就像用flashget下载文件时程序里面的提示内容,以前phpx.com也讨论,可以去搜索看看.
加载更多回复(22)
一、硬件 在快速发展的物联网与智能设备时代,RISC-V作为一种先进的开源指令集架构,正逐步成 为业界的焦点。 中电港萤火工场推出基于兆易创新(GigaDevice)GD32VW553——一款RISC-V内核的32 位MCU的开源硬件板GD32VW553-IOT-V2。该板集成了主控芯片卓越的无线连接能力(集成Wi-Fi 6 与BLE5.2)、强大的性能与能效比以及丰富的外设接口,可享受到开源社区带来的丰富资源 和便利,极大地方便了开发者的快速部署和应用创新。 全新的设计针对旧款的开发痛点进行了系统性优化: Type-C口升级:集成串口功能,简化调试与程序下载流程,提升开发便捷性 新增开关:增设用户可自定义按键及指示灯,拓展交互控制与状态显示功能 板面布局优化:背面增加引脚丝印,正面仅保留关键器件丝印,布局清晰及信息聚焦 FLASH焊接位:移至背面,减少焊接风险,增加开源二次开发的灵活性 BOOT开关优化:升级为拔码式设计,简化操作逻辑,提升切换效率 稳固性增强:板厚增至1mm,提升了整体结构强度与抗变形能力 联合兆易创新打造GD32无线生态专区,整合产品动态、开源分享、方案应用、资料下载等,iceasy 二、MLX90614温度传感器 MLX90614 是一款集成红外热电堆传感器和信号处理芯片的非接触式温度计。它采用了先进的红外感应技术,可以对目标物体进行高精度和高分辨率的温度测量,适用于各种工业、汽车等应用。 特性和优点 MLX90614 具有以下主要特性和优点: 高精度和高分辨率:由于集成了低噪声放大器、17 位模数转换器和强大的数字信号处理单元,使得温度计具备高精度和高分辨率1。 宽温度范围:环境温度范围为 -40℃ 至 125℃,物体温度范围为 -70℃ 至 382.2℃1。 低功耗:功耗仅为 1mA 左右,适合于电池供电的场合2
源码链接: https://pan.quark.cn/s/1470f27e49f3 标题“移动号码库”所标识的是一个汇集了中国各地移动通信公司手机号码信息的资源,这些信息可用于数据分析、市场推广或电信行业研究等领域。描述中提及“依据中国地区移动电话编码”,这表明数据库内的号码是依照中国的电话区号分配制度进行排列的,中国的手机号码一般由11位数字构成,其中前三位象征运营商(例如中国移动的139、138等,中国联通的130、131等),随后的数字则代表用户所在地的区号。在所提供的压缩文件中:1. **手机号码归属地采集.exe**:这是一个可执行文件,或许是一种用于成批获取或查询手机号码归属信息的工具。通过键入手机号码,该程序能够输出该号码所属的省、市以及运营商的详情,从而使用户能够辨识号码的来源。2. **Data.mdb**:这代表一个Microsoft Access的数据库文件,极有可能包含了移动号码库的关键数据。Access数据库能够高效地管理和整理大量结构化的数据,诸如手机号码、区号、城市详情等。用户可以通过设定特定的查询来检索或分析这些数据。3. **MSCOMCTL.OCX**:这是一个ActiveX组件,频繁应用于早期的Windows软件中,提供各类用户界面组件。在此情境下,它可能是手机号码归属地采集程序的一部分,用于优化程序的界面功能,比如列表视图或表格控件,用于展示和操作手机号码数据。4. **Count.txt**:这是一个文本文档,通常用来记录特定的统计信息,如数据库中的手机号码总数、不同地区号码的分布状况等。用户可以通过查阅这个文档迅速掌握号码库的大致容量。综合上述内容,我们可以推断这个压缩文件是一个用于处理和分析中国移动电话号码数据的...

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧