কার্ল দিয়ে URL এর পুনর্নির্দেশ লক্ষ্যটি পান


24

আমি যেখানে একক ইউআরএল পুনর্নির্দেশ করে তা পরীক্ষা করতে চাই। এর উদাহরণ হ'ল গুগলের অনুসন্ধান ফলাফল পৃষ্ঠা থেকে লিঙ্ক (যেখানে ক্লিক সর্বদা গুগল সার্ভারের মধ্য দিয়ে যায়)।

আমি কি এটা দিয়ে করতে পারি curl?

উত্তর:


18

এটা চেষ্টা কর:

$ LOCATION=`curl -I http://raspberrypi.stackexchange.com/a/1521/86 | perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
$ echo "$LOCATION"
/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521#1521

গুগল পুনর্নির্দেশগুলি

গুগল পুনর্নির্দেশ URL গুলি কিছুটা আলাদা। তারা একটি জাভাস্ক্রিপ্ট পুনর্নির্দেশ ফিরিয়ে দেয়, যা সহজেই প্রক্রিয়া করা যায়, তবে কেন মূল URL এবং সমস্ত একসাথে কার্লের জন্য প্রক্রিয়া করা যায় না?

$ URL="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFAQFjAA&url=http%3A%2F%2Fwww.raspberrypi.org%2F&ei=rv8oUODIIMvKswa4xoHQAg&usg=AFQjCNEBMoebclm0Gk0LCZIStJbF04U1cQ"
$ LOCATION=`echo "$URL" | perl -n -e '/url=([a-zA-Z0-9%\.]*)/ && print "$1\n"'`
$ echo "$LOCATION"
http%3A%2F%2Fwww.raspberrypi.org%2F
$ echo "$LOCATION" | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
http://www.raspberrypi.org/

উল্লেখ

  1. ইউআরএল ডিকোডের জন্য ...

বিশেষ অক্ষর (যেমন গুগলের পুনঃনির্দেশগুলি) সহ বিশেষ ইউআরএলগুলি সম্পর্কে কীভাবে, উদাহরণস্বরূপ: google.com/…
সিন্টাগমা

@REachUS পুনর্নির্দেশটি দেওয়া URL এর ক্যোরিয় স্ট্রিংটিতে এনকোড করা হয়েছে।
অ্যালেক্স চেম্বারলাইন

@REachus কোনও উদ্বেগ নেই - আপনি সম্ভবত 2 পার্ল বিবৃতি একত্রিত করতে পারেন।
অ্যালেক্স চেম্বারলাইন

20

আরও সহজ উপায় আছে

curl -w "%{url_effective}\n" -I -L -s -S $URL -o /dev/null

এটি মুদ্রণ হবে

http://raspberrypi.stackexchange.com/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521

ইউআরএল জন্য

http://raspberrypi.stackexchange.com/a/1521/86

3
যদিও আপনি দ্বিতীয় পৃষ্ঠাটিও ডাউনলোড করছেন যেহেতু এটি আরও বেশি সময় এবং ব্যান্ডউইথ ব্যবহার করে।
অঘটন

1
@ উনহামার আপনি ঠিক বলেছেন, কেবলমাত্র প্রধান অনুরোধগুলি করতে আমার উত্তর আপডেট করেছেন।
ইসমাইল

7

পুনর্নির্দেশগুলি অনুসরণ করতে এবং সমাপ্তির পরে ভেরিয়েবলগুলি মুদ্রণ করতে কার্ল কনফিগার করা যেতে পারে। সুতরাং আপনি যা জিজ্ঞাসা করছেন তা নিম্নলিখিত কমান্ড দিয়ে অর্জন করা যেতে পারে:

curl -Ls -w %{url_effective} -o /dev/null https://google.com

ম্যান পৃষ্ঠাটি এর মতো প্রয়োজনীয় প্যারামিটারগুলি ব্যাখ্যা করে:

-L, --location          Follow redirects (H)
-s, --silent            Silent mode (don't output anything)
-w, --write-out FORMAT  Use output FORMAT after completion
-o, --output FILE       Write to FILE instead of stdout

4

বা এটি চেষ্টা করুন

curl -s -o /dev/null -I -w "HTTP_CODE: %{http_code}\nREDIRECT_URL: %{redirect_url}\n" http://raspberrypi.stackexchange.com/a/1521/86

বিশেষ অক্ষর (যেমন গুগলের পুনঃনির্দেশগুলি) সহ বিশেষ ইউআরএলগুলি সম্পর্কে কীভাবে, যেমন: google.com/…
সিন্টাগমা

কেবল একক উদ্ধৃতিতে ইউআরএল রাখুন, যাতে আপনার শেলটি লিঙ্কটির বিশেষ অক্ষরগুলিকে উপেক্ষা করে। তবে আপনি যে লিঙ্কটি বলেছেন তা অন্য uri এ পুনর্নির্দেশ করবে না, প্রতিক্রিয়াটির স্থিতি কোডটি 200x এবং 3xx নয়। আপনি যে ইউরিটির জন্য সন্ধান করছেন তা যথাক্রমে প্রতিক্রিয়ার সামগ্রীতে ইউরির মধ্যে লুকিয়ে রয়েছে। আরও পরীক্ষার জন্য আপনি প্রতিক্রিয়াটির সাথে প্রতিক্রিয়াটির সাথে শিরোনাম এবং প্রতিক্রিয়াটির curl -s -I 'http://yoururl'বিষয়বস্তু অধ্যয়ন করতে পারেন curl -s 'http://yoururl'(আপনি দেখতে পাবেন যে গুগল পুনঃনির্দেশের জন্য একটি সাধারণ জাভাস্ক্রিপ্ট ব্যবহার করে)।
ব্যবহারকারী 1146332

0

প্যারামিটারগুলি -L (--location)এবং -I (--head)এখনও অবস্থান-url- এ অপ্রয়োজনীয় হেড-অনুরোধ করছে।

আপনি যদি নিশ্চিত হন যে আপনার একাধিক পুনর্নির্দেশ হবে না, তবে অনুসরণের অবস্থানটি অক্ষম করা এবং কার্ল-ভেরিয়েবল% {redirect_url use ব্যবহার করা ভাল}

এই কোডটি নির্দিষ্ট ইউআরএল-এ কেবল একটি হেড-অনুরোধ করে এবং অবস্থান-শিরোলেখ থেকে redirect_url নেয়:

curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "https://goo.gl/QeJeQ4"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.