使用JavaScript提取facebook页面的源代码

使用JavaScript提取facebook页面的源代码,javascript,facebook,Javascript,Facebook,如果我在Chrome的JavaScript控制台中编写代码,我可以通过输入以下内容检索整个HTML源代码: var a = document.body.InnerHTML; alert(a); 对于Facebook上的fb_dtsg,我可以通过以下方式轻松提取: var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value; 现在,我正试图从Facebook页面中提取代码“h=AfJSxEzzdTSrz pS”。h值对于F

如果我在Chrome的JavaScript控制台中编写代码,我可以通过输入以下内容检索整个HTML源代码:

  var a = document.body.InnerHTML; alert(a); 
对于Facebook上的fb_dtsg,我可以通过以下方式轻松提取:

  var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value;
现在,我正试图从Facebook页面中提取代码“h=AfJSxEzzdTSrz pS”。h值对于Facebook报告特别有用

如何获取报告的h值?我不知道h值是多少;当您与不同的用户通信时,h值是完全不同的。如果没有该h正确值,则无法报告。实际上,h值是afxxxxxxxxxx(在'Af'后面有11个字符的值),这就是我所知道的

你有什么想法可以在Facebook页面上获取价值或生成功能吗

Facebook源代码片段如下所示,您可以在Facebook个人资料上查看源代码,然后搜索h=Af,您将获得值:

  <code class="hidden_elem" id="ukftg4w44">
<!-- <div class="mtm mlm">
  ...
   ....
  <span class="itemLabel fsm">Unfriend...</span></a></li>
  <li class="uiMenuItem" data-label="Report/Block...">
  <a class="itemAnchor" role="menuitem" tabindex="-1" href="/ajax/report/social.php?content_type=0&amp;cid=1352686914&amp;rid=1352686914&amp;ref=http%3A%2F%2Fwww.facebook.com%2      F%3Fq&amp;h=AfjSxEzzdTSrz-pS&amp;from_gear=timeline" rel="dialog">
  <span class="itemLabel fsm">Report/Block...</span></a></li></ul></div>

  ...
   ....
  </div> -->
  </code>

这是我的第一次尝试,假设您不怕一点jQuery:

// http://stackoverflow.com/a/5158301/74757
function getParameterByName(name, path) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

var html = $('.hidden_elem')[0].innerHTML.replace('<!--', '').replace('-->', '');
var href = $(html).find('.itemAnchor').attr('href');
var fbId = getParameterByName('h', href); // fbId = AfjSxEzzdTSrz-pS
//http://stackoverflow.com/a/5158301/74757
函数getParameterByName(名称、路径){
var match=RegExp('[?&]'+name+'=([^&]*)).exec(path);
返回匹配和解码组件(匹配[1]。替换(/\+/g',);
}
var html=$('.hidden_elem')[0].innerHTML.replace('');
var href=$(html).find('.itemAnchor').attr('href');
var fbId=getParameterByName('h',href);//fbId=AfjSxEzzdTSrz pS

编辑:没有jQuery的方法:

// http://stackoverflow.com/a/5158301/74757
function getParameterByName(name, path) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

var hiddenElHtml = document.getElementsByClassName('hidden_elem')[0]
    .innerHTML.replace('<!--', '').replace('-->', '');

var divObj = document.createElement('div');
divObj.innerHTML = hiddenElHtml;

var itemAnchor = divObj.getElementsByClassName('itemAnchor')[0];
var href = itemAnchor.getAttribute('href');

var fbId = getParameterByName('h', href);
//http://stackoverflow.com/a/5158301/74757
函数getParameterByName(名称、路径){
var match=RegExp('[?&]'+name+'=([^&]*)).exec(path);
返回匹配和解码组件(匹配[1]。替换(/\+/g',);
}
var hiddenElHtml=document.getElementsByClassName('hidden_elem')[0]
.innerHTML.replace(“”,”);
var divObj=document.createElement('div');
divObj.innerHTML=hiddenElHtml;
var itemAnchor=divObj.getElementsByClassName('itemAnchor')[0];
var href=itemAnchor.getAttribute('href');
var fbId=getParameterByName('h',href);


我真的很想为“取消注释”HTML提供一个不同的解决方案,但我对regex很反感:)

为什么不直接使用实际的API呢?它必须比非法的更容易*刮掉主网站(*-在你的国家可能不是非法的,不是律师,等等)科里,你能帮我一个忙吗?我可以使用Jquery。它很好用。在该注释块中,有6个链接具有itemAnchor类。基本上,你的功能是拾取第一个链接。那么,我如何才能拿起第六个链接,其中有ItemAnchor类?非常感谢你。你可以用Jquery向我解释。谢谢你,科里。你的帮助对我来说意义重大。请你能重新喜欢这个-你能解决第六类链接吗?我尝试了以下代码,它不适合我<代码>变量项=$('.itemAnchor')[6];var href=$($('.hidden_elem')[1].innerHTML.replace('').find(item.attr('href')科里-@HafiziVilie:看来有人比我抢先一步。希望你已经得到了所有你想要的答案@哈菲齐维利:请记住,这不是一个代码编写服务。我愿意花时间做的事,我已经帮了很多忙。我希望其他人能帮你解决问题。
// http://stackoverflow.com/a/5158301/74757
function getParameterByName(name, path) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(path);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

var hiddenElHtml = document.getElementsByClassName('hidden_elem')[0]
    .innerHTML.replace('<!--', '').replace('-->', '');

var divObj = document.createElement('div');
divObj.innerHTML = hiddenElHtml;

var itemAnchor = divObj.getElementsByClassName('itemAnchor')[0];
var href = itemAnchor.getAttribute('href');

var fbId = getParameterByName('h', href);