V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wending
V2EX  ›  PHP

PHP 模拟浏览器在控制台输入内容回车

  •  
  •   wending · 2017-06-09 19:32:02 +08:00 · 3953 次点击
    这是一个创建于 2523 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教 PHP and JS 大神,如何才能够用 PHP 模拟用户在浏览器的控制台输入内容?


    比如我打开任意一个网站,然后在控制台输入 alert("你好")

    然后网站就会弹出提示,然后我想利用 PHP 实现,请教。


    提醒:不是控制台的 log 或者 error 输入那类,
    第 1 条附言  ·  2017-06-09 20:51:30 +08:00
    看我视频上的描述吧 http://aasssv.nos-eastchina1.126.net/PHP 模拟控制台操作.mov
    第 2 条附言  ·  2017-06-09 20:52:27 +08:00
    上面的链接不行,换这个 http://aasssv.nos-eastchina1.126.net/PHPconsole.mov
    第 3 条附言  ·  2017-06-09 20:59:58 +08:00
    35 条回复    2017-06-12 16:48:55 +08:00
    wending
        1
    wending  
    OP
       2017-06-09 19:39:48 +08:00 via iPhone
    OK ?
    cxbig
        2
    cxbig  
       2017-06-09 20:20:59 +08:00
    用 PHP 输出一段 JS 代码即可。
    浏览器只能跑 JS,所以 PHP 只能是送一段 JS 代码到加载的页面。
    jtsai
        3
    jtsai  
       2017-06-09 20:28:51 +08:00
    <?php echo '<script>alert("你好")</script>'
    rekulas
        4
    rekulas  
       2017-06-09 20:31:12 +08:00
    这题意。。我都没看懂呢,用 php 实现什么?实现 alert ?那是不可能的。仅仅是调用 alert,那又没什么好实现的
    Fishdrowned
        5
    Fishdrowned  
       2017-06-09 20:32:34 +08:00 via Android
    你是不是要这个
    php -a
    wending
        6
    wending  
    OP
       2017-06-09 20:43:35 +08:00
    @Fishdrowned 不是
    qiayue
        7
    qiayue  
       2017-06-09 20:46:16 +08:00
    直接说出你的原始需求
    jeffw
        8
    jeffw  
       2017-06-09 20:51:08 +08:00
    在说啥?没看懂
    ajan
        10
    ajan  
       2017-06-09 20:58:35 +08:00
    不能实现
    jugelizi
        11
    jugelizi  
       2017-06-09 21:10:29 +08:00
    至少按你说的请死了心
    Fishdrowned
        12
    Fishdrowned  
       2017-06-09 21:16:06 +08:00
    wending
        13
    wending  
    OP
       2017-06-09 21:35:43 +08:00
    @Fishdrowned 还看不懂。
    feiyuanqiu
        14
    feiyuanqiu  
       2017-06-09 21:55:19 +08:00 via iPhone
    selenium
    t6attack
        15
    t6attack  
       2017-06-09 22:00:36 +08:00
    然而控制台是浏览器的一部分。脱离了浏览器,就不存在控制台这个概念了。

    至于模拟浏览器行为?任何语言,都可以简单模拟 http 请求。但模拟浏览器行为,就必须借助一个内核引擎,比如 webkit。你也可以调用别人封装好的,phantomjs 这种。
    至于 php 实现的浏览器引擎?或者封装了 webkit 的第三方扩展?目前还没有。

    我感觉,你是对 客户端、服务端、后台服务器运行的代码、前台给浏览器解析代码。。这些概念没明确
    rekulas
        16
    rekulas  
       2017-06-09 22:02:01 +08:00
    你搞错了概念,你想做的是前端控制,php 只负责后端处理,不可能在客户端执行(虽然有能让 php 执行 js 的框架但那也是在后端),你可能想学点 js
    nutting
        17
    nutting  
       2017-06-09 22:03:27 +08:00 via Android
    php 是后台,最终就是产生 html 和 js,逻辑要搞清楚。浏览器的控制台是浏览器自己的功能,再说控制台不就是执行 js ?你要啥真正的需求,能不能变通实现
    txlty
        18
    txlty  
       2017-06-09 22:09:53 +08:00
    大概明白了楼主的愿望。其实想用 php 编写油猴脚本。
    那么,你需要的是一个 JS 实现的 php 解释引擎。。
    lslqtz
        19
    lslqtz  
       2017-06-10 03:08:03 +08:00
    楼主是希望使用 PHP 当 JS 用,而且还 TM 希望能操控浏览器。。
    两个条件:
    1、JS 实现的 PHP 解释引擎。
    2、一个浏览器插件 /扩展。
    ffkjjj
        20
    ffkjjj  
       2017-06-10 09:11:38 +08:00 via iPhone
    不能。
    mingyun
        21
    mingyun  
       2017-06-10 09:12:05 +08:00
    没法实现吧
    ety001
        22
    ety001  
       2017-06-10 09:45:58 +08:00
    表示看视频也没有看明白到底想干啥。。。
    hvsy
        23
    hvsy  
       2017-06-10 10:14:44 +08:00 via iPhone
    楼主应该是想用 php 来做自动化的发帖之类的功能。这表达能力也没有谁了。
    wending
        24
    wending  
    OP
       2017-06-10 11:18:30 +08:00
    @hvsy 你错了,不是这样,我知道模拟登录和发帖,我会做,但我要求的是模拟点击
    wintercoder
        25
    wintercoder  
       2017-06-10 11:30:22 +08:00
    你需要写个游猴或 chrome 扩展
    hvsy
        26
    hvsy  
       2017-06-10 12:52:06 +08:00
    @wending 你还是说一下为什么你需要这个"模拟点击"吧.你这样藏着掖着真是累的慌.如果你是想实现百度页面的那种在 console 里面输出的话.直接在 php 页面里面引入一个 js 文件.然后在 js 文件里面调用 console.log 就可以了
    AJian
        27
    AJian  
       2017-06-10 12:56:40 +08:00
    大家都没用过 phantom.js ?
    AJian
        28
    AJian  
       2017-06-10 12:59:33 +08:00
    @wending 模拟点击,js 可以直接做啊,比如你用 jQuery,$('xxx').trigger('click')
    AJian
        29
    AJian  
       2017-06-10 13:04:05 +08:00
    https://github.com/jonnnnyw/php-phantomjs github 上看到了这个,不知道行不行
    wending
        30
    wending  
    OP
       2017-06-10 15:47:12 +08:00
    @hvsy 不是那样,我知道你的,这个我试过了,只是显示,支付宝页面也有 console.log
    @AJian 我知道 js 可以这样,但是我想用 PHP 来实现啊,,
    @AJian 没用过
    hvsy
        31
    hvsy  
       2017-06-10 16:21:15 +08:00 via iPhone
    @wending 你不说出目的来很无语,你没有搞明白 php 是干啥的,php 只是返回文本内容给浏览器,如果要影响浏览器 php 是通过返回 js 代码来的
    Mitt
        32
    Mitt  
       2017-06-11 03:50:02 +08:00 via iPhone
    现在就是搞不清楚你是想在客户端实现还是服务端实现 客户端那就 php 输出 js 操作 服务端那就自己找浏览器引擎了 如果想实时操作客户端 那你可能想太多 反正你最终实现都是 js
    we3613040
        33
    we3613040  
       2017-06-11 09:11:25 +08:00
    不能,大哥,php 是后端,从后端到前端,页面展示以后,后端就不能在控制页面了
    wending
        34
    wending  
    OP
       2017-06-11 10:28:44 +08:00
    @Mitt
    @we3613040 好吧,谢谢各位的帮助
    meepo3927
        35
    meepo3927  
       2017-06-12 16:48:55 +08:00
    楼主需要的可能是 phantomjs
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1405 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:45 · PVG 07:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.