প্রতিটি বিতরণ করা HTML পৃষ্ঠায় কীভাবে এইচটিএমএল কোড ইনজেক্ট করবেন?


23

আমি একটি পেয়েছি Apache web serverযা স্থির HTML পৃষ্ঠাগুলি সরবরাহ করে। কিছু কারণে আমি নিজে ফাইলগুলি পরিবর্তন করতে পারি না, তবে আমি এখনও দেওয়া প্রতিটি পৃষ্ঠায় কিছু এইচটিএমএল ইনজেক্ট করতে চাই।

এটি দিয়ে কি সম্ভব mod_proxy? যদি তা না হয়, কেউ কি এমন কোনও সফ্টওয়্যার প্রস্তাব করতে পারেন যা এই জাতীয় বৈশিষ্ট্য সরবরাহ করে?

সম্পাদনা: আমাকে এক ধরণের ব্যানার বিজ্ঞাপন (উদাহরণস্বরূপ javascript) এবং একটি ট্র্যাকিং পিক্সেল inোকাতে হবে।

উত্তর:


18

আপনি এটি করতে পারেন: অনুরোধগুলি পরিবর্তন করতে মোড_উইরায়েটের সাথে কাজ করুন

/some/static/page.html

থেকে

/htmlinjector.php?url=/some/static/page.html

তারপরে ফাইল-ম্যানিপুলেশন করতে পিএইচপি (বা আপনি যা উপযুক্ত মনে করেন) ব্যবহার করুন। কর্মক্ষমতা উন্নত করতে একটি আউটপুট ক্যাশে যুক্ত করুন।

বিকল্প হিসাবে, অ্যাপাচি হ্যান্ডলারগুলি সহায়ক বলে মনে হচ্ছে:

একটি সিজিআই স্ক্রিপ্ট ব্যবহার করে স্থির সামগ্রী পরিবর্তন করা

নিম্নলিখিত নির্দেশাবলী html এক্সটেনশন সহ ফাইলগুলির জন্য footer.plসিজিআই স্ক্রিপ্টের প্রবর্তনকে ট্রিগার করতে অনুরোধ জানাবে requests

Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html

তারপরে সিজিআই স্ক্রিপ্টটি মূলত অনুরোধকৃত দস্তাবেজ ( PATH_TRANSLATEDপরিবেশের পরিবর্তনশীল দ্বারা চিহ্নিত ) এবং যেকোন পরিবর্তন বা সংযোজনগুলি পছন্দ করে তা করার জন্য দায়বদ্ধ ।

মোড_উরাইট পদ্ধতির এটি কম-বেশি যা কেবলমাত্র হ্যাকারি দিয়েই হয়।


কেউ কি মোড_আরাইট সমাধানের উদাহরণ দিতে পারে? (বিশেষত htmlinjector.php এর বিষয়বস্তু)
আসফ

1
আপনাদের মধ্যে যারা এই সঙ্গে সংগ্রাম জন্য - ভুলবেন না ScriptAliasএবং <Directory /some/static/>...</Directory>, <Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>ইত্যাদি আমি ব্যবহারকারীর উত্তর বিনষ্ট করতে না চান কিন্তু আপনি আবশ্যকতা হলে, আমি আরও তথ্য দিতে হবে।
শ্রীধর সারনোবাত

@ এসএডিএফ উদাহরণ: <?php ob_start(); include("/some/static/page.html"); $contents = ob_get_contents(); ob_end_clean(); echo str_replace('</head>', '<script async>Some script content goes here like adsense code</script></head>', $contents) ?>পৃষ্ঠাটির বাকী অংশটি লোড করতে $ সামগ্রীটি ব্যবহার করুন। আপনি এই ফাইলটিকে htmlinjector.php বা যেকোন কিছু হিসাবে সংরক্ষণ করতে পারেন এবং এটি আপনার htaccess ফাইলে যেমন কল করতে পারেন:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
গ্যাব্রিয়েল নভোফিয়াহ দ্বিতীয়

20

উত্তরের তালিকায় কেন এটি উল্লেখ করা হয়নি তা আমি নিশ্চিত নই। দুঃখিত যদি এই প্রশ্নটি দেখতে আমার 2 বছর সময় নেয় ...

আপনি যা করতে চান তা করার সহজতম এবং শক্তিশালী উপায় হ'ল অ্যাপাচি ফিল্টার

ঠিক আছে:

ExtFilterDefine css_changer mode=output intype=text/html cmd="/some/php/script.php"
SetOutputFilter css_changer

একটি সম্ভাব্য স্ক্রিপ্ট:

#!/usr/bin/php
<?

#phpinfo(); // Uncomment to see ALL env variables
$host = $_ENV["HTTP_HOST"]; // www.site.com
$script_name = $_ENV["SCRIPT_NAME"]; // /theme/green/style.css
$pi = pathinfo($script_name);
$type = $pi['extension'];
#print "$host $script  $type";

$stdin = STDIN;

while($line = fgets($stdin)){
  $line = preg_replace('/a/', 'A', $line);

  fwrite(STDOUT, $line);
}
fclose(STDOUT);
?>

এটি সমস্ত "এ" গুলিকে "এ" এস তে পরিবর্তন করবে।

আপনার httpd.conf এ ফিল্টার সক্ষম করার বিষয়ে নিশ্চিত হন:

LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so

এই প্রশ্নটি গুগলে সত্যিই রয়েছে এবং ফোরামের ক্ষেত্রে খুব বেশি কিছু নেই


1
এটি এখন পর্যন্ত সেরা সমাধান, আমি একই ধরণের সমস্যার সন্ধান করতে সক্ষম হয়েছি। ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ!
11

4

একটি ওয়েবপৃষ্ঠায় লিঙ্কগুলি সম্পাদনা করতে Mod_proxy_html কীভাবে ব্যবহার করতে হয় তার একটি টিউটোরিয়াল (সামগ্রী) is আপনি চান এই এইচটিএমএলটি পরিবর্তন করতে এটি প্রয়োগ করতে পারবেন।

আপডেট: আপনি কি এই পথে যেতে চান? আমি মনে করি অ্যাপাচি মানে বিষয়বস্তু পরিবেশন করা, এটি তৈরি করা নয়। এটি সম্ভবত একটি এমভিসি কাঠামোর দর্শন অংশে যাবে। আমি এটির প্রস্তাবনা দেওয়ার কারণটি হ'ল আপনি মডারুলিটির নিয়ম ভঙ্গ করছেন । আপনার ওয়েব অ্যাপ্লিকেশনটি সেই সার্ভারের সাথে জড়িত থাকবে যা ভবিষ্যতের আপগ্রেড, চলন ইত্যাদিকে জটিল করে তোলে application


এইচএম, আমি যদি এটি সঠিকভাবে পাই তবে mod_proxy_html সম্পূর্ণ নতুন কোড স্নিপেট যুক্ত করতে সক্ষম নয়?
নোড

নিশ্চিত নয়, এখন আপনি আরও যুক্ত করেছেন, কমান্ডার তোমালকের উত্তর আরও ভাল শোনা যাচ্ছে। আপনি হ্যাকারির জমিতে রয়েছেন আমি বলব, ওয়েব পৃষ্ঠাগুলি তৈরি করা আপাচি যা সত্য তা নয়, এটি সামগ্রী সরবরাহ করার জন্য।
কাইল ব্র্যান্ড্ট

আমি চেষ্টা করেছি যে এখানে কিছু প্রকারের স্ট্যান্ড্যালোন প্রক্সি রয়েছে যা HTML পৃষ্ঠাগুলি পুনরায় লিখতে পারে re মাইএসকিউএলের জন্য মাইএসকিউএল প্রক্সি এর মতো কিছু। সম্ভবত প্রিয়ভোক্সি এটি করতে পারতেন।
নোড

@ কাইল ব্র্যান্ডেট: এলওএল - আমি মনে করি সামরিক পদমর্যাদার কথা উল্লেখ করা আপনাকে আনুষ্ঠানিকভাবে ট্রেককি করে তুলেছে। এটা আমার দিন তৈরি। :)
টমলাক

4

আমি মোড_উরাইট এবং এসএসআই দিয়ে এটি করতে পছন্দ করব।

প্রথমে পথটিকে পরিবেশের পরিবর্তনশীলে রাখুন

রিভারাইটকন্ড%। IS_SUBREQ} মিথ্যা
পুনর্লিখন ule (/.* \। এইচটিএমএল) / পৃষ্ঠা.shtml [ই: ফাইলের নাম: $ 1]

তারপরে shtml ফাইলে এটি প্রক্রিয়া করুন

<! - # অন্তর্ভুক্ত ভার্চুয়াল = "$ ফাইলের নাম" ->

(এই সমাধানের অংশগুলি একটি স্ট্যাকওভারফ্লো প্রশ্নের উপর ভিত্তি করে /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )


1
এর জন্য shtml ব্যবহার করার আমার প্রধান কারণটি হ'ল প্রতিটি অনুরোধের জন্য একটি বাহ্যিক সিজিআই কল করা লোড সমস্যার কারণ হতে পারে।
অ্যালেক্স লেহম্যান

4

mod_sed এখানে একটি ভাল ফিট। আপনি একটি আউটপুট ফিল্টার তৈরি করতে পারেন যা ক্লোজিং হেড বা বডি ট্যাগের সাথে মেলে, উদাহরণস্বরূপ, এবং এর আগে আপনার এইচটিএমএল .োকাতে পারেন।


1

একটি mod_perl মডিউল কোন ব্যবহার হতে পারে?

http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm

এটি আপনি যা চান তা করতে পারে বা কমপক্ষে আপনাকে সঠিক দিকে নির্দেশ করে।


থেক্স, আমি একটি কটাক্ষপাত করব, এই মুহুর্তে আমরা কাস্টম ফুটার.পিএল সহ httpd.apache.org/docs/2.0/handler.html ঝোঁক
নোড

1

আপনি কিছু মানদণ্ড বা নিয়মিত অভিব্যক্তি ব্যবহার করে বহির্গামী প্রতিক্রিয়াগুলিতে এইচটিএমএল ইনজেক্ট করতে অ্যাপাচি Mod_subst વિકલ્પ ব্যবহার করতে পারেন। এটি কীভাবে অর্জন করা যায় তার একটি ব্যাখ্যা এখানে


1

আপনি নীচে নির্দেশাবলী ব্যবহার করে অ্যাপাচে শিরোনাম এবং পাদচরণের দিকনির্দেশ দেখতে পারেন।

<Directory "/usr/local/www/data/scott">
    Options +Indexes
    AllowOverride All
    AddOutputFilter LAYOUT html htm shtml
    LayoutComment On
    LayoutHeader /wrappers/scott-header.html
    LayoutFooter /wrappers/scott-footer.html
</Directory>

আরও পঠন এখানে: http://wannabe.guru.org/scott/hobby/apache/


1

মোড লেআউটটি এখন অপ্রচলিত এবং যদি আপনি কোনও বাহ্যিক স্ক্রিপ্ট কল করার ওভারহেড না চান তবে আমার পক্ষে কাজ করা সেরা সমাধানটি ছিল মোড সেড । আপনি ডক (1 এস) এর প্রথম লাইনের সাথে মেলে মোড শেড ব্যবহার করতে পারেন এবং সেখানে শিরোনাম স্ক্রিপ্ট কোড যুক্ত করতে এবং শেষ লাইন ($ গুলি) এর সাথে মেলে এবং পাদলেখ রাখতে পারেন।

Options Indexes FollowSymLinks Includes ExecCGI
Order Deny,Allow
Deny from none
Allow from all
Require all granted

AddOutputFilter Sed html
SetOutputFilter Sed;DEFLATE
OutputSed "1s|^|<header code>|"
OutputSed "$s|$|</footer code>|g"

0

আমি অ্যাপাচি এর মাধ্যমে সমস্ত পৃষ্ঠায় এইচটিএমএল প্রবেশ করতে পারি, তবে কেবলমাত্র আমার অ্যাপাচি দ্বারা হোস্ট করা সাইটের জন্য, আমার অ্যাপাচি প্রক্সি সার্ভার যদিও সমস্ত সাইট নয়।

এইভাবে এটি কাজ করে। আমি একটি এক্সএএমপিপি সেট আপ করেছি, অ্যাপাচি ২.৪ এর জন্য মোড_এলআউট ৫.১ ডাউনলোড করুন। (মোড_লেআউটটি ইনস্টল করা সহজ, যদি আপনি উইন্ডোগুলির জন্য এক্সএএমপিপি ব্যবহার করেন তবে উইন্ডোজের জন্য কেবল মোড_লেআউট.এসও 5.1 ডাউনলোড করুন এবং এটি আপনার অ্যাপাচি মডিউল ফোল্ডারে $ হোম / অ্যাপাচি / মডিউলটিতে রাখুন, তারপরে কনফিগার ডিএসওকে আপনার httpd.conf LoadModule লেআউট_মডিউল মডিউল / mod_layout.so - আপনি যদি লিনাক্স বা অন্যান্য ওএস ব্যবহার করেন তবে আপনার লিনাক্সের জন্য mod_layout.so ডাউনলোড করা উচিত, তবে ইনস্টল করার জন্য মেক কমান্ড চালান)

উইন্ডোজের জন্য mod_layout.so ইনস্টল করার পরে, এই কোডটি আপনার .htaccess ফাইল বা httpd.conf এ রেখে দিন আপনার সমস্ত পৃষ্ঠায় এইচটিএমএল সন্নিবেশ পাবেন:

<IfModule mod_layout.c>
AddOutputFilter LAYOUT html 
AddOutputFilter LAYOUT htm 
AddOutputFilter LAYOUT shtml 
AddOutputFilter LAYOUT shtm 
AddOutputFilter LAYOUT cgi 
AddOutputFilter LAYOUT php 
LayoutFooter "C:/xampp/apache/cgi-bin/footer.php"
</IfModule>

সি: /xampp/apache/cgi-bin/footer.php আপনি যেখানে এইচটিএমএল বা পিএইচপি ফাইল রাখেন, আমার পরিস্থিতিতে সি: /xampp/apache/cgi-bin/footer.php, তবে আপনি যে কোনও জায়গায় রাখতে পারেন , শুধু সঠিক পথ দিন, আপনি ভাল থাকবেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.