কীভাবে পাইথনের অনুরোধগুলি ব্রাউজারে ভিজিট জাল করতে পারেন?


127

আমি নীচের ওয়েবসাইট থেকে সামগ্রী পেতে চাই। আমি যদি ফায়ারফক্স বা ক্রোমের মতো ব্রাউজার ব্যবহার করি তবে আমি চাইলে সত্যিকারের ওয়েবসাইট পৃষ্ঠাটি পেতে পারি তবে আমি পাইথন অনুরোধ প্যাকেজটি (বা wgetকমান্ড) এটি ব্যবহার করতে চাইলে এটি সম্পূর্ণ ভিন্ন HTML পৃষ্ঠা ফেরত দেয় page আমি ভেবেছিলাম ওয়েবসাইটটির বিকাশকারী এটির জন্য কিছু ব্লক তৈরি করেছে, সুতরাং প্রশ্নটি হ'ল:

অজগর অনুরোধ বা কমান্ড উইজেট ব্যবহার করে আমি কীভাবে ব্রাউজার ভিজিট নকল করব?

http://www.ichangtou.com/#company:data_000008.html

উত্তর:


281

একটি User-Agentশিরোনাম সরবরাহ করুন :

import requests

url = 'http://www.ichangtou.com/#company:data_000008.html'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(url, headers=headers)
print(response.content)

এফওয়াইআই, এখানে বিভিন্ন ব্রাউজারগুলির জন্য ব্যবহারকারী-এজেন্ট স্ট্রিংয়ের একটি তালিকা রয়েছে:


পার্শ্ব নোট হিসাবে, জাল-ইউজারেজেন্ট নামে একটি দুর্দান্ত উপকারী তৃতীয় পক্ষের প্যাকেজ রয়েছে যা ব্যবহারকারী এজেন্টদের উপর একটি দুর্দান্ত বিমূর্ত স্তর সরবরাহ করে:

জাল- useragent

রিয়েল ওয়ার্ল্ড ডাটাবেস সহ আধুনিক ব্যবহারকারীর আপ টু ডেট

ডেমো:

>>> from fake_useragent import UserAgent
>>> ua = UserAgent()
>>> ua.chrome
u'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36'
>>> ua.random
u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36'

1
আপনার উত্তরের জন্য ধন্যবাদ, আমি আমার অনুরোধগুলিতে শিরোলেখগুলির সাথে চেষ্টা করেছিলাম কিন্তু এখনও পৃষ্ঠার আসল সামগ্রীটি পাইনি, একটি স্ট্রিং রয়েছে 'এই অ্যাপ্লিকেশনটিকে সঠিকভাবে প্রদর্শন করার জন্য আপনার ওয়েব ব্রাউজারে অবশ্যই জাভাস্ক্রিপ্ট সক্ষম থাকতে হবে।' প্রত্যাবর্তিত এইচটিএমএল পৃষ্ঠায়, আমি কি অনুরোধগুলিতে জাভা স্ক্রিপ্ট সমর্থন যুক্ত করব? তা হলে আমি কীভাবে এটি করব?
ব্যবহারকারী 1726366

8
@ ব্যবহারকারী 1726366: আপনি কেবল জাভাস্ক্রিপ্ট সমর্থন যোগ করতে পারবেন না - এর জন্য আপনার একটি জাভাস্ক্রিপ্ট ইন্টারপ্রেটারের প্রয়োজন ter আসল ওয়েব ব্রাউজারের জাভাস্ক্রিপ্ট ইন্টারপ্রেটার ব্যবহার করা সবচেয়ে সহজ পদ্ধতির উপায়, তবে আপনি সেলেনিয়াম ব্যবহার করে পাইথন থেকে এটি স্বয়ংক্রিয় করতে পারেন ।
পিএম 2 রিং

1
@ অ্যালেক্সেক্স, @ স্পটনিক: আমি পাইথন অনুরোধ এবং ব্রাউজার ব্যবহারের পার্থক্যের তুলনা করার জন্য ওয়্যারশার্কের সাথে প্যাকেটগুলি ক্যাপচার করার চেষ্টা করেছি, মনে হচ্ছে ওয়েবসাইট ইউআরএল স্থির নয়, পৃষ্ঠাটি রেন্ডারটি সম্পূর্ণ হওয়ার জন্য আমার অপেক্ষা করতে হবে, তাই সেলেনিয়াম শোনায় আমার জন্য সঠিক সরঞ্জাম। আপনার সদয় সহায়তার জন্য আপনাকে ধন্যবাদ। :)
ব্যবহারকারী 1726366

4
@ ইউজার 1726366 হ্যাঁ, যদি সত্যিকারের ব্রাউজার + সেলেনিয়াম ব্যবহার করা আপনার প্রয়োজনের সাথে খাপ খায় তবে এটি সবচেয়ে বেদনাদায়ক পদ্ধতির approach মনে রাখবেন যে আপনি PhantomJSসেলেনিয়াম সহ হেডলেস ব্রাউজার ব্যবহার করতে পারেন । ধন্যবাদ। (উত্তরটি যদি সহায়ক হয় তবে তা গ্রহণ করতে ভুলবেন না)
অ্যালেক্স

30

যদি এই প্রশ্নটি এখনও বৈধ হয়

আমি নকল ইউজার এজেন্ট ব্যবহার করেছি

ব্যবহারবিধি:

from fake_useragent import UserAgent
import requests


ua = UserAgent()
print(ua.chrome)
header = {'User-Agent':str(ua.chrome)}
print(header)
url = "https://www.hybrid-analysis.com/recent-submissions?filter=file&sort=^timestamp"
htmlContent = requests.get(url, headers=header)
print(htmlContent)

আউটপুট:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17
{'User-Agent': 'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}
<Response [200]>

তবুও ত্রুটি 404 হচ্ছে
মাকসিম নিয়াজেভ

1
404 টি ভিন্ন ত্রুটি, আপনি কি ব্রাউজার ব্যবহার করে পৃষ্ঠাটি ব্রাউজ করতে পারবেন?
উমেশ কৌশিক

একেবারে। আমি ওয়েব সাইটটির মতো অনুভব করছি যা আমি নিষিদ্ধ সমস্ত অ্যামাজন ইসি 2 আইপি ব্যবহার করার চেষ্টা করছি।
মাকসিম নাইয়াজেভ

আপনি এখানে লিঙ্কটি পিং করতে পারেন? আমি আমার শেষে চেষ্টা করতে পারেন। আরও যদি আইপি অবরুদ্ধ থাকে তবে ত্রুটি কোড 403 (নিষিদ্ধ) বা 401 (অননুমোদিত) হওয়া উচিত। এমন ওয়েবসাইট রয়েছে যা কিছুতেই স্ক্র্যাপিংয়ের অনুমতি দেয় না। আরও অনেক ওয়েবসাইট ব্যবহারকারীর ওয়েবসাইট অ্যাক্সেস করতে বট এড়াতে ক্লাউডফ্লেয়ার।
উমেশ কৌশিক

এখানে আমার লিঙ্কটি regalbloodline.com/music/eminem । এটি আগে ভাল কাজ করে। অজগর 2 এ কাজ করা বন্ধ করে দিলেন 2 লোকাল মেশিনে অজগর 3 এ কাজ করেছেন। এডাব্লুএস ইসি 2 এ সরানো সেখানে কাজ করে না। ত্রুটি 404 এ রাখা হয়েছে Then তবে লোকাল মেশিনেও কাজ করা বন্ধ করে দিয়েছে। ব্রাউজার এমুলেশন ব্যবহার করে স্থানীয় মেশিনে কাজ হয়েছিল তবে ইসি 2 তে নয়। শেষ পর্যন্ত আমি ছেড়ে দিয়েছি এবং স্ক্র্যাপের বিকল্প ওয়েবসাইট পেয়েছি। উপায় দ্বারা কি মেঘলা আগুন এড়ানো যেতে পারে?
মাকসিম নাইয়াজভ

7

ফায়ারফক্সকে ভুয়া ব্যবহারকারী এজেন্ট হিসাবে ব্যবহার করে এটি চেষ্টা করে দেখুন (তদুপরি, কুকিজের ব্যবহার সহ ওয়েব স্ক্র্যাপ করার জন্য এটি একটি ভাল স্টার্টআপ স্ক্রিপ্ট):

#!/usr/bin/env python2
# -*- coding: utf8 -*-
# vim:ts=4:sw=4


import cookielib, urllib2, sys

def doIt(uri):
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    page = opener.open(uri)
    page.addheaders = [('User-agent', 'Mozilla/5.0')]
    print page.read()

for i in sys.argv[1:]:
    doIt(i)

ব্যবহার:

python script.py "http://www.ichangtou.com/#company:data_000008.html"

3

উত্তরের মূলটি হ'ল যে প্রশ্নটি জিজ্ঞাসা করছে তার পরে যা আছে তা পেতে জাভাস্ক্রিপ্ট দোভাষী থাকা দরকার। আমি যা পেয়েছি তা হ'ল আমি জাভাস্ক্রিপ্ট দ্বারা ব্যাখ্যা করার আগে জসনের একটি ওয়েবসাইটে আমি যা চেয়েছিলাম তার সমস্ত তথ্য পেতে সক্ষম হয়েছি। প্রতিটি ওয়েবপৃষ্ঠা একই ফর্ম্যাটে রয়েছে আশা করে এইচটিএমএলকে কীভাবে পার্স করা হবে তাতে এটি আমার বেশ কয়েকবার সাশ্রয় করেছে।

সুতরাং আপনি যখন কোনও ওয়েবসাইট থেকে অনুরোধগুলি ব্যবহার করে কোনও প্রতিক্রিয়া পান তখন সত্যিই এইচটিএমএল / পাঠ্যের দিকে নজর দিন কারণ আপনি পাদলেখ করতে জাভাস্ক্রিপ্ট জেএসওএন খুঁজে পেতে পারেন ed

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